리눅스 기초(리눅스 구조)
리눅스는 유닉스 계열의 운영체제를 의미 한다.
리눅스의 특징
1. 대부분의 플랫폼에서 사용이 가능 하다.
2. 뛰어난 안정성과 보안성을 지닌다.
=> 커널 소스 코드 및 모든 관련 자료가 공개 되어 있기 때문!
3. 성능이 낮은 컴퓨터에서도 작동된다.
4. 멀티유저와 멀티테스킹이 가능하다.
5. 대부분의 리눅스는 무료이다.
6. 다양한 네트워크 서비스를 제공한다.
=> 다양한 프로토콜을 제공
=> 인터넷 기반 어플리케이션 제공
=> 다양한 웹서버를 제공한다.
리눅스 구조
리눅스의 구조는 (대략적으로) 이렇게 되어있다. 우리들은 쉘에 명령어를 입력함 으로서 우리가 원하는 명령어를 실행한다.
필요할경우 커널을 통해서 하드웨어 까지 제어할 수 있다.
쉘
쉘은 유저와 직접 소통하며 유저의 명령을 수행한다.
처음 ubuntu를 깔때는 bash쉘이 기본으로 되어있다.
zsh, ash, sh 등 많은 쉘이 있지만 필자는 oh my zsh을 쓴다!
윈도우의 cmd도 하나의 쉘이라고 볼 수 있다.
/etc/shells 파일을 보면 사용할수 있는 쉘 목록이 있다.
/etc/passwd를 보면 사용자가 로그인시 사용하는 쉘이 있다. echo $SHELL로도 확인이 가능.
쉘을 바꾸고 싶으면 chsh를 이용하면 된다.
커널
커널은 운영체제에 가장 필요한 핵심이다.
커널은 처음 부팅될 때 메모리에 올라간다.
시스템의 여러 부분을 제어한다.
멀티태스크 환경을 제공한다. 멀티태스크는 여러개의 프로세스를 동시에 실행하는것을 의미한다.
시스템콜(syscall)을 이용해서 응용프로그램과 상호작용한다.
/proc/sys에 있는 특수 파일을 사용해 실시간으로 커널의 옵션을 설정하고 확인할 수 있다.
커널에 대한 자세한 공부는 6,7 월달에 자세히 공부해야 겠다...