[OS] 운영체제(1장) 운영체제 소개 - 3
4. 운영체제 구조
다중 프로그래밍(Multiprogramming)
여러 개의 작업을 동시에 main memory에 적재하고, 적재된 작업들이 CPU를 번갈아 사용하게 함(multiplexing)
-
(배경)단일 작업이 CPU와 I/O장치를 모든 시간에 사용할 수 없다.
-
(목적)CPU efficiency 증가
어떤 작업이 I/O 수행동안 또는 사건을 기다리는 동안 CPU를 계속하여 사용할 수 없을 때에 메모리에 적재된 다른 작업이 CPU를 사용하게 함 → CPU와 I/O 장치가 많은 시간동안 busy상태가 됨 → CPU 사용효율 증가
시분할(Time-Sharing) - Multitasking
대화식 입출력을 위한 Multiprogramming의 논리적 확장 프로그램 실행동안 사용자가 자신의 작업과 interaction을 할 수 있도록 여러 작업들이 CPU를 매우 빈번하게 번갈아 사용함 → Interactive computer system 용
Interaction Computer system
응답시간이 짧아야 함(< 1sec) Time-sharing은 짧은 응답시간을 제공함
Multiprogramming | Time Sharing | |
---|---|---|
목적 | CPU 사용률 최대화 | 응답시간 최소화 |
작업지시 방법 | Job control language 명령어 | 터미널에서 명령어 입력 |
5. 운영체제 동작
운영체제는 interrupt-driven 동작을 수행 많은 작업들이 컴퓨터 자원을 공유하여 실행되며 한 프로그램의 bug에 의해서 영향 받을 수 있음 → 무한루프, 다른 프로그램의 메모리를 수정 자원공유는 Protection 기능을 필요로 함
Dual-Mode (또는 Multi-Mode) Operation
대부분의 CPU는 OS와 사용자 프로그램의 실행을 구분하기 위하여 두 개이상의 동작 모드를 제공함
- User mode
- Kernel mode (supervisor, monitor, system, privileged mode) CPU mode bit가 현재의 동작 모드를 표시함
- (예) kernel mode : 0, user mode : 1
특권 명령어 (Privileged Instruction)
- Kernel mode에서만 실행가능한 instruction
- User mode에서 실행되면 exception 발생 ➔ privilege violation
- CPU는 시스템 동작에 영향을 주는 명령어를 특권명령어로 설계함
(예)
- I/O instructions
- Timer, interrupt 관리
- 메모리 관리장치(MMU) 관리
- 시스템 제어 : halt, interrupt 활성화 등
User mode | Kernel mode |
---|---|
User 프로그램 실행 | OS 실행 |
특권 명령어 실행 불가 | 특권 명령어 실행 가능 |
일부 메모리 공간 접근 불가 | 모든 메모리 공간 접근 가능 |
동작 모드 전환
CPU 동작모드 전환
Power on : kernel mode에서 시작 OS가 적재되어 실행되면, 사용자 프로세스를 user mode에서 시작하게 함 Interrupt가 발생하면 kernel mode로 전환됨 Interrupt로부터 return되면 원래의 동작모드로 전환됨
- Dual mode를 제공하지 않는 CPU는 보호기능이 제공되지 않음
시스템 호출 수행 과정
- System call 명령어 호출 : INT, trap, syscall 등
- OS의 해당 system call 서비스 루틴이 kernel mode에서 실행
- 서비스 루틴은 parameter를 유효성을 검증하고, 서비스를 수행
- 서비스 수행 종료 후 return from interrupt 명령어 실행 → system call 다음의 명령어로 실행 제어 전달이 이루어짐
Timer와 CPU Protection
CPU protection
Timer 사용 : 무한 루프 방지, 특정 process의 CPU독점 방지
Timer interrupt
Timer는 지정된 기간 후에 interrupt (예: 1/60초) OS가 timer(counter)를 설정함 Timer가 매 클럭마다 감소하여, 0이 될 때에 interrupt가 발생
6-9. 자원 관리
- Process 관리
- Process : 실행 중인 프로그램
- Program : 수동적 개체
- Process : 능동적 개체
- Process 실행을 위해서 CPU, memory, file, I/O device와 initialization data가 필요
- Process : 실행 중인 프로그램
- Memory 관리
- Memory
- MMU (Memory Management Unit)
- Storage 관리
- Mass storage 관리
- File system 관리
Caching
정보를 더 빠른 storage로 일시적으로 복사하는 것
Cache 관리 방법이 중요한 설계 문제임
Storage 계층구조와 데이터 이동
Cache 일관성 문제
- 같은 data가 여러 계층에 존재할 수 있음
- 다른 계층에 있는 동일 data는 consistent 해야함 “원본 = 복사본” 유지
- Multiprocessor나 분산 환경에는 consistency 유지가 더욱 복잡해짐
10. 커널 자료구조
운영체제 커널에서 주요 자료구조가 많이 사용됨
- Linked list
- Singly linked list
- Doubly linked list
- Circular linked list
- Stack, Queue
- stack : LIFO
- queue : FIFO
- Tree
- Binary search tree : worst case O(n)
- Balanced binary search tree : O(log n)
- (ex) 리눅스에서 red-black tree 사용
- Hash function
- Search : O(1)
- Bitmap
- N items의 상태를 N bits로 표시
- (ex) 자원사용 상태
11. 컴퓨팅 환경
- Traditional computing
- Mobile computing
- Client-Server Computing
- Peer-to-Peer Computing
Cloud Computing
네트워크를 통하여 computing, storage, application들을 서비스로 제공하는 컴퓨팅
- Software as a Service(SaaS)
- Platform as a Service(PaaS)
- Infrastructure as a Service(IaaS)
가상화(Virtualization)
운영체제가 다른 운영체제 환경에서 실행하는 것을 허용 Host OS와 guest OS 모두 CPU 기계어로 컴파일된 native code 사용
댓글남기기