2022. 9. 19. 01:04ㆍ카테고리 없음
운영체제란 무엇인가? 운영체제는 자원 관리자라고 볼 수 있다.
그러면 자원은 무엇인가? 운영체제가 관리해야 할 자원은 크게 물리적인 자원과 추사적인 자원으로 구분할 수 있다
물리적 자원은 CPU,메모리,디스크,터미널,네트워크 등 시스템을 구성하고 있는 요소들과 주변 장치 등이 있다.
추상적 자원은 물리적 자원을 OS가 관리하기 위해 추상화시킨 객체들이다.
대표적 추상적 자원에는 CPU를 추상화시킨 태스크 , 메모리를 추상화시킨 세그먼트&페이지
디스크를 추상화시킨 파일 네트워크를 추상화시킨 통신 프로코톨,패킷 등이 있다.
밑의 그림은 리눅스 커널 구조를 도표로 나타낸다
![](https://blog.kakaocdn.net/dn/beYUKP/btrMkNnynVB/vk7C0zJPrXJ1IRfkjGoLwK/img.jpg)
[커널의 대표적인 5가지 구조]
- CPU라는 물리적인 자원을 태스크라는 추상적인 자원으로써 제공해주는 태스크 관리자
- 메모리를 세그먼트나 페이지라는 개념으로 제공해주는 메모리 관리자
- 디스크를 파일이라는 추상적 개념으로 제공해주는 파일 시스템
- 네트워크 장치를 소켓이라는 개념으로 제공해주는 네트워크 관리자
- 각종 장치를 디바이스 드라이버를 통해 일관되게 접근하도록 해주는 디바이스 드라이버 관리자
커널은 자원 관리자이며 커널이 관리하는 자원은 물리적 자원과 추상적 자원이 있다
좀 더 구체적으로는 태스크 관리자는 태스크의 생성, 실행, 상태 전이, 스케줄링, 시그널 처리, 프로세스 간 통신(IPC), 등의 서비스 제공을 한다.
메모리 관리자는 물리 메모리 , 가상 메모리 관리 그리고 이들을 위한 세그멘테이션, 페이징, 페이지 부재 결함 등의 서비스를 제공한다.
파일 시스템은 파일의 생성, 접근제어, inode 관리, 디렉터리 관리, 슈퍼 블록 관리 등의 서비스를 제공한다.
네트워크 관리자는 소켓 인터페이스, TCP/IP 같은 통신 프로토콜 등의 서비스를 제공한다.
디바이스 드라이버는 디스크나 터미널, CD, 네트워크 카드 등과 같은 주변 장치를 구동하는 드라이버들로 구성된다.
![](https://blog.kakaocdn.net/dn/csL4qZ/btrMjcgVRyp/PZzVh4hV2DSLdKVGQta440/img.jpg)
![](https://blog.kakaocdn.net/dn/CsER8/btrMtF2qFLV/shkC1COrO2Hde7YFnhK4Kk/img.jpg)
kernel : 커널 관리 루틴의 코어가 들어가 있는 부분 arch : 리눅스가 지원하는 하드웨어 의존적인 코드 위치 ( for EACH Architectures ) init : 커널의 초기화 코드 위치 ipc : 프로세스의 통신 코드 위치 (Mess..
traeper.tistory.com
간단하게 정리해보자 자세한 건 구글링 ^^
-Kernel 디렉터리
태스크 관리자가 구현된 디렉터리, 태스크의 생성과 소멸, 프로그램 실행, 스케줄링, 시그널 처리 등의 기능이 이 디렉터리에 구현되어 있다.
-arch 디렉터리
하드웨어 종속적인 부분들이 구현된 디렉터리
-fs 디렉터리
리눅스에서 지원하는 다양한 파일 시스템과 open(), read(), write()등의 시스템 콜이 구현된 디렉터리
-mm 디렉터리
메모리 관리자가 구현된 디렉터리 (가상 메모리, 메모리 객체 관리 등)
-driver 디렉터리
리눅스에서 지원하는 디바이스 드라이버가 구현된 디렉터리
디바이스 드라이버란 주변 장치를 추상화시키고 관리하는 커널 구성 요소.
-net 디렉터리
리눅스 커널 소스 중 상당히 많은 양을 차지하는 이 디렉터리는 리눅스가 지원하는 통신 프로콜이 구현된 디렉터리 TCP/IP , IPX , AppleTalk 등등..
-ipc 디렉터리
프로세스 간 통신 기능이 구현된 디렉터리
message passing, shared memery , sema-phore가 구현되어 있다
-init 디렉터리
커널 초기화 부분, 즉 커널의 메인 시작 함수가 구현된 디렉터리. 하드웨어 종속적 초기화가
arch/$(ARCH)/kernel 디렉터리 하위에 있는 head.S와 mics.c에서 이뤄지고 나면, 이 디렉터리에 구현되어 있는 start_kernel()이라는 C함수로 제어가 넘어온다
이 함수가 커널 전역적인 초기화 수행을 하게 된다
-include 디렉터리
리눅스 커널이 사용하는 헤더 파일들이 구현된 디렉터리
하드웨어 독립적 부분은 include/linux 하위 디렉터리에 정의되어 있고,
하드웨어 종속적인 부분은 include/asm-$(ARCH) 디렉터리에 정의되어 있다.
이 책의 필자 경험상 Doc 디렉터리에 귀중한 자료들이 많이 있다고 한다.