-
운영체제 기본지식과 리눅스운영체제 2020. 10. 18. 18:48728x90
OS 구성도
OS User Interface
GUI, Shell 등 다양한 형태로 제공
역할
-
명령어 해석
-
커널에 명령어 전달 (실행)
-
결과 출력
시스템 콜
주로 high level language (c, c++)로 작성되며, OS는 이를 사용자에게 제공하기 위해 API(Application Programming Interface)를 제공합니다.
시스템 함수가 호출되면 Software interrupt 가 발생하고, 인터럽트 별로 어떻게 대응할지는 IDT(Interrupt Descriptor Table)에 저장되어 있습니다. system_call()의 경우에는 entry.S에 가서 사용자가 호출한 시스템 함수의 인덱스를 찾습니다. 이후 sys_call_table 이라는 시스템콜을 정리해둔 테이블에 해당 인덱스를 찾아가면 시스템 함수의 주소가 저장되어 있고, 이를 실행한 뒤 리턴해주도록 되어 있습니다.
OS의 구조 유형
-
Simple structure
-
Monolithic : 하나의 코드에 몰아서 구현하는 방식
-
장점 : 효율성과 속도의 상승
-
단점 : 유지보수가 어려움
-
Layered : 커널이 너무 많은 일을 하다보니 일을 계층화
각 계층은 바로 아래 계층에서 제공하는 기능(연산)과 서비스만 사용 -
장점 : 구축과 디버깅이 단순함
-
단점 : 각 계층의 기능을 명확히 정의하기 어려움, 효율성이 떨어짐. (하드웨어인 계층 0까지 내려가려면 무수히 많은 계층들을 통과해야하기 때문)
-
Microkernel : kernel 은 작게 만들고, 커널 위에 도와주는 모듈을 붙이는 방식
-
장점 : 이식성, 확장성, 신뢰성이 좋고, 보안이 좋음
-
단점 : 속도가 떨어짐
Monolithic 은 커널이 모든 일을 처리했기에 IPC가 필요 없었지만 마이크로 커널은 크기를 줄이고 모듈간의 중재자 역할만을 하기에 IPC가 필요하게 됨 -
Module : 모듈화된 monolithic = 리눅스
-
커널의 모듈을 동적으로 로딩하는 방식
-
Layered 방식과 마찬가지로 모듈간의 상호작용을 요구
-
대신 Layered는 계층 level에 따라 명령어 처리 순서가 정해져있지만 모듈은 모두 동등함
-
Hybrid
-
여러 구조를 섞어 사용하는 방식
-
리눅스와 솔라리스의 커널 주소 공간의 경우 monolithic에 module 방식을 더해서 씀
리눅스 시스템 구조
리눅스는 Monolithic 과 Module 을 섞어 사용하는 하이브리드 구조
'운영체제' 카테고리의 다른 글
[OS] 가상메모리 주소공간과 MMU (0) 2020.11.26 [OS] OS 페이징 기법 (0) 2020.10.22 [OS] 운영체제와 메모리 (0) 2020.10.22 CPU 스케쥴링 (0) 2020.10.19 운영체제의 프로세스 (0) 2020.10.19 -