Operating System Structure
OS Services & System Calls
API – System Call – OS Relationship
- 시스템 call : 컴퓨터 프로그램이 실행되는 운영 체제의 커널로부터 서비스를 요청하는 프로그래밍 방식
- 시스템 호출은 API(Application Program Interface)를 통해 운영 체제의 서비스를 사용자 프로그램 제공
- 시스템 콜은 운영체제에 의해 사용 가능하게 된 서비스에 대한 인터페이스 제공
<API가 open() 시스템 콜을 불렀을 때 운영체제가 어떻게 처리?>
System Call Parameter Passing
- 시스템 콜 호출을 위해서는 운영체제에 매개변수를 전달해야만 한다.
- OS 에게 PARAMETER 넘기는 가장 일반적인 세가지 방법
① 레지스터 : Simplest: pass the parameters in registers.
② 블럭 : Parameters stored in a block, or table, in memory, and
address of block passed as a parameter in a register.
- 메모리의 block 또는 테이블에 저장된 파라미터와 레지스터의 파라미터로 전달된 블록의 주소
③ 스택 : Parameters placed, or pushed, onto the stack by the
program and popped off the stack by the operating system.
- 프로그램에 의해 '스택'에 배치되고 운영 체제에 의해 스택에서 'pop'된 파라미터
- 블럭, 스택은 PARAMTER 수 제한 X
Types of System Calls (프로세스 제어, 파일 조작, 장치 조작, 정보 유지 보수, 통신 보호 - 정통프파디)
① Process control
- end, abort, create, terminate, allocate and free memory.
프로세스 제어 : 메모리 종료, 중단, 생성, 종료, 할당 및 사용 가능
② File management
- create, open, close, delete, read file etc.
파일관리 : 파일 만들기, 열기, 닫기, 삭제, 읽기 등
③ Device management 기기 관리
- 요청/해제 장치, 읽기/쓰기/위치 조정, 장치 속성 가져오기/설정, 장치 연결/해제
④ Information maintenance 정보 유지 관리
- 시간/날짜/프로세스/파일/장치 특성 가져오기/설정
⑤ Communications 통신
- 연결 생성/삭제, 메시지 전송/수신, 상태 정보 전송, 원격 장치 연결/삭제
Widely-used Kernel Date Structures
① Lists (singly/doubly/circularly), Stacks, and Queues
② Trees
③ Hash Functions
④ Bitmaps
System Boot : 커널을 적재하여 컴퓨터를 시작하는 과정
Bootstrap loader (from ROM) runs diagnostics (i.e., POST (Power-On-Self Test)) and has a bit of code that can read a single block (boot block; e.g. MBR) at a fixed location from disk and execute the code.
부트스트랩 로더는 진단(예: POST(Power-On-Self Test))을 실행하고 디스크에서 고정된 위치에서 단일 블록(예: MBR_)을 읽고 코드를 실행할 수 있는 코드를 가지고 있습니다.
The program in boot block loads either entire OS or reads remainder of the bootstrap program from disk based on the address and length info.
부트 블록의 프로그램은 전체 OS를 로드하거나 주소 및 길이 정보에 따라 디스크에서 부트스트랩 프로그램의 나머지 부분을 읽습니다.
Operating System Structure
UNIX
- consists of two separable parts
(1) Systems programs 시스템 프로그램
(2) The kernel 커널
Microkernel
- 마이크로커널 방법은 모든 중요치 않은 구성요소를 커널로부터 제거
- 그들을 별도의 주소 공간에 존재하는 사용자 수준 프로그램으로 구현하여 운영체제를 구성하는 방법 (Moves as much from the kernel into “user” space)
- 메시지 전달을 사용하여 사용자 모듈 간에 통신이 이루어짐
- Easier to extend a microkernel (base for other OS, e.g., Mac OS X).
- 마이크로커널(예: Mac OS X)을 쉽게 확장
- Easier to port the operating system to new architectures.
- More reliable (less code is running in kernel mode).
- 신뢰성 향상(커널 모드에서 실행 중인 코드가 적음).
- More secure
<단점>
Virtual Machines (VM)
- 하나의 하드웨어(CPU, Memory등)에 다수의 운영체제를 설치, 개별 컴퓨터처럼 동작하도록 하는 프로그램
- 가상 시스템은 단일 컴퓨터의 하드웨어를 여러 실행 환경으로 추상화해 각각의 개별 실행 환경이 고유한 개인 컴퓨터(시스템 가상 시스템라고도 함)를 실행하고 있는 것처럼 착각하게 함
<VM 장점>
(1) 가상 시스템 개념은 각 가상 시스템이 다른 모든 가상 시스템과 격리 => 시스템 리소스를 완벽하게 보호
- BUT isolation은 직접 리소스 공유 허용X
(2) 운영 체제 연구 및 개발에 완벽한 도구
- 시스템 개발은 물리적 시스템 대신 가상 시스템에서 수행, 정상적인 시스템 작업이 중단 X
- 복제도 가능
(3) system consolidation(시스템 통합) 사용 가능
- 두 개 이상의 개별 시스템을 한 시스템의 가상 시스템에서 실행하는 작업이 포함
- 결과 : resource optimization (자원 최적화)
- 경미한 사용량의 시스템을 결합하여 많이 사용되는 시스템을 만들 수 있음 => CPU 활용률 향상
Native VM vs Hosted VM
(1) Native VM
- runs directly on bare-machine
(2) Hosted VM
- 가상 시스템 모니터 또는 시스템 에뮬레이터가 호스트 OS위에서 실행됨