카테고리 없음

운영 체제의 구조

희황 2020. 3. 19. 20:31

제 3장

운영 체제의 구조

 
운영체제의 기능

•운영체제의 기능 

•시스템의 자원 관리 

•CPU, 메모리, 보조기억장치, 입출력장치, H/W 및 S/W 자원 

•가상 컴퓨터 제공 

•시스템 H/W와 상관없이 운영체제에 따라 유일한 인터페이스 제공 


•커널(Kernel) 

•운영체제의 방대한 기능을 모두 메모리에 상주 시킬 수 없음 

•운영체제의 핵심적인 부분인 커널만 메모리에 상주함 

•시스템 호출(System Call)을 통해 서비스를 제공 

•Booting: 커널을 메모리에 적재하는 과정 


•운영체제의 서비스 

•시스템 호출: 자원 관리 및 사용에 관한 커널의 서비스 

•시스템 프로그램: 운영체제 개발자가 프로그램 형태로 제공 

•편집기, 컴파일러, 쉘(shell) 등 

 
운영체제의 핵심: Kernel

•Kernel 

•메모리에 상주하며 시스템 호출을 제공하는 운영체제 핵심 모듈 


•형태적 구성 요소 

•시스템 호출 함수들의 집합 (top-half of kernel)  

•인터럽트 처리기의 집합 (bottom-half of kernel) 


•자원 운영 기능 

•프로세스 운영 

•중앙 처리기 운영 

•주기억장치 운영 

•파일 시스템과 보조 기억장치 운영 

•시스템 Clock 운영 

•네트워크 운영 

•시스템 보안 및 보호 

•기타 입출력 장치 운영 

 
자원 경영: 프로세스 운영

•프로세스 운영 

•Process: 실행중인 프로그램 (program in execution) 

•Program: 수동적인 개체로서의 실행 코드 

•Process: 능동적인 개체로서 자원을 할당 받아 실행중인 프로그램 

•사용자가 생성한 프로세스 

•시스템이 생성한 프로세스 

•CPU, Memory, File, I/O 등의 자원을 경쟁/할당하는 기본 단위 

•병행 프로그램(Parallel Program) 

•하나의 프로세스가 실행 중 여러 프로세스를 생성하여 동시에 실행 


•운영체제가 프로세스에 대해 수행하는 일 

•사용자와 시스템 프로세스의 생성 및 종료 관리 

•프로세스의 일시 중지와 속개 

•프로세스의 동기화를 위한 수단 제공 

•프로세스간의 통신 

•교착 상태 (Deadlock) 처리 

 
자원 경영: 메모리 운영

 
자원 경영

•보조 기억 장치 운영 

•디스크를 기본 저장 장치로 사용 

•커널, 컴파일러 등 대부분이 디스크에 저장 후 메모리에 적재됨 

•운영체제가 보조 기억장치에 대해 수행하는 일 

•빈 공간 관리 

•기억 장소의 할당 

•디스크 스케줄링 


•입출력 운영 

•OS는 H/W의 복잡한 세부 사항을 감추고 편리한 사용방법을 제공 

•Buffer Cache System을 이용해 효율성 향상 

•메모리 일부에 디스크 블록을 저장하여 디스크 입출력 최소화 

•운영체제가 보조 기억장치에 대해 수행하는 일 

•일반화된 장치 구동기 인터페이스 

•장치 구동기 (Device Driver) 

 
자원 경영

•파일 운영 

•파일: 해당 파일을 만든 사람이 정의한 연관된 정보의 집합 


•자기디스크, CD, 플래시 메모리 등에 저장 

•각 매체는 해당 장치 구동기(Driver)에 의해 제어 


•커널은 파일 보관 시 일관되고 논리적인 개념으로 처리하도록 함 


•커널은 대용량 기억 매체와 제어 장치를 관리함으로 파일의 개념을 구현 


•운영체제가 파일 운영과 관련하여 수행하는 일 

•파일과 Directory의 생성과 삭제 

•파일과 Directory의 조작 

•보조 기억 장치에 파일 사상 

•안정된 비휘발성 장치에 파일 BACKUP 





 
자원 경영

•보호 시스템 

•운영체제로부터 인가 받은 프로세스가 할당 받은 자원을 적절히 사용하도록 보장함 

•보호: 한 컴퓨터 시스템에서 정의한 자원에 대해 프로세스 혹은 사용자가 접근하는 것을 적절히 통제함 

•통제와 관련된 제어 규정을 설정 

•규정을 어기는 경우 자원을 회수하는 등 규정을 강제로 집행 


•네트워크 운영 

•커널의 내부 기능으로 네트워크 기능을 제공 

•분산 시스템 설계 시 필수 

•물리적으로 떨어져 있고, 이질적인 시스템들을 모아 만든 단일 시스템 

 
API (Application Programming Interface)

•프로그래머가 운영체제에게 서비스를 사용하기 위하여 호출하는 루틴(Routine) (특별한 함수) 

•프로그램이 API를 호출하면 system call을 통해 OS에 접근 



 
시스템 호출

•시스템 호출(System Call) 

•프로세스와 커널 사이의 인터페이스 

•Top half of kernel 

•함수 호출 형태로 사용됨 

•자원 관리 기능과 연관되어 종류가 세분화 됨 


•시스템 호출의 종류 

•프로세스 제어: create, exit, wait, signal, allocate memory,… 

•파일 조작: create, delete, open, read, write, close,… 

•주변 장치 조작: request, release, read, write, reposition,… 

•정보 관리: get system data, get attribute, get time,… 

•통신: create connection, send, receive, close connection,… 


•시스템 호출의 구현 

•시스템 호출 실행 시 Kernel Mode로 실행됨 

•Trap: 커널 진입을 위한 Mechanism 

 
System Call Handler & Service Routines

System Call 호출

 

 

 

 

 

 

 

 
인터럽트

 
기타 기능

•명령 번역기 

•쉘(shell) style, GUI style 


•부팅과 초기화 

•컴퓨터 시스템의 Booting 

•커널을 메모리에 적재하는 작업 

•각종 H/W를 초기화 

•사용자 명령 수행을 위한 번역기 실행 


•Bootstrapping 

•운영체제 커널이 자기 자신을 적재하는 과정 

•커널의 일부는 track 0에 있고 나머지는 다른 위치에 존재 

•시스템 시작 시 track 0에 저장된 코드를 메모리로 읽어 들여 실행 

 
기타 기능

•부팅과 초기화 

•파일 시스템 자체가 필요 없는 시스템의 경우 

•ROM 또는 플래시 메모리에 Boot Loader 저장 


•운영체제의 초기화 

•Bootstrap loader에 의해 운영체제 커널이 적재된 후 

•메모리 초기화 

•각종 H/W 장치들 감지 및 초기화 

•인터럽트 vector와 구동기(driver) 적재 

•파일 시스템 접근을 위한 정보를 얻는 File Mount 수행 

•메모리 관리, 네트워크 관리 등을 위한 프로세스 생성 

•사용자 모드의 프로세스를 생성 

 
Intel System Initialization

 
Bootstrapping

 
 

 

 

Bootstrapping

 
커널의 구조

•커널은 그 양이 방대하고 복잡함 

•일반적으로 독립적인 기능을 가진 작은 부분(Component)으로 나누어 개발하고 관리함 


•분류 

•단순 구조 커널과 계층 구조 커널 

•단순구조 커널: 작고 간단하며 제한된 기능의 시스템 

•MS-DOS, Unix 

•계층 구조 커널: 계층을 정의하여 상위계층은 하위 계층에서 제공하는 기능을 이용하여 구현 

•THE, Venus, OS/2 

•Monolithic Kernel vs. Micro Kernel 

•Monolithic 커널: 자원 경영에 필요한 모든 기능을 커널 내부에 포함 

•Unix, Linux 등 

•마이크로 커널: System Call/Interrupt 처리의 최소 기능만 포함 

•Mach at CMU, Windows-NT 등 

 
단순 구조 커널







 
단순 구조 커널

•MS-DOS 

•가장 작은 프로그램에서 가장 많은 기능을 제공하기 위해 제작 

•기능별 인터페이스나 Mode가 잘 분리되어 있지 않음 

•기본 입출력 명령어로 화면이나 디스크에 직접 출력 가능 

•사용자 프로그램이 실패 시 전체 시스템이 down 되기도 함 

•잘못 작성된 프로그램에 의해 디스크 전체가 지워지기도 함 


•Unix 

•초기 유닉스 시스템은 커널과 시스템 프로그램의 두 부분으로 나누어 관리됨 

•커널 

•일련의 시스템 호출 인터페이스와 장치 구동기 

•시스템 프로그램 

•Compile이나 파일 조작 등의 유용한 기능을 커널에서 지원하는 시스템 호출을 통해서 제공 

 
계층 구조

•LAYER(계층, 수준) 접근 방식 

•H/W 에서 적절한 기능이 제공되면 운영체제는 좀 더 잘 정의된 작은 부분으로 나누어 사용 가능함 

•운영체제 변경 시 융통성을 가지게 됨 


•Modular OS 

•우수한 통제성 및 변경 용이 

•Top-Down 방식으로 전체 기능 정의 후에 이들을 요소로 분리 

•여러 계층으로 분리하여 운영체제 구성 

•계층 0은 하드웨어 

•계층 N은 사용자 인터페이스 

•M 계층에서는 (M-1) 계층에서 제공되는 기능을 불러 사용함 

•시스템의 오류 제거와 검증을 용이하게 함 

•어떤 계층의 오류 발생 시 그 오류는 그 계층에만 국한됨 

•T.H.E.(Technische Hogeschool Eindhoven) by Dijkstra 

•Venus, OS/2 





 
T.H.E. 운영체제의 계층 구조







 
Monolithic Kernel vs. Micro Kernel

•Monolithic 커널 

•모든 기능을 커널의 시스템 호출과 인터럽트 처리 부분에 포함하여 제공하는 커널 

•CPU, 프로세스, 메모리, 파일시스템, 입출력, 네트워크 등 

•운영체제 서비스 사용은 시스템 호출 형태로 이루어짐 

•호출에 의한 서비스가 빠르다 

•새로운 입출력 장치 부착 시 재 컴파일 후 부팅 필요 

•H/W나 운영체제에 종속적인 부분을 분리한 계층 구조를 가짐 


•마이크로 커널 

•커널의 축소를 위해 시스템 호출과 인터럽트 처리 부분의 핵심적인 기능만 남겨 커널의 크기를 대폭 축소한 커널 

•CPU, Memory, Process, IPC, Synchronization 등만 커널에 포함 

•파일, Network, I/O 장치 Driver 등은 사용자 프로세스 형태로 제공 

•유연성 있게 여러 OS의 기능을 제공하고 커널의 크기가 작다 

•우선순위 기능이 있지만 기능의 처리 속도가 늦다 

 
Monolithic Kernel 구조



 
Beginning of Linux







 


 
Monolithic Kernel vs. Micro Kernel