티스토리 뷰
반응형
운영체제란?
- 하드웨어를 관리하기 위한 프로그램
- 컴퓨터 하드웨어와 사용자 사이에서 중간자 역할을 하는 프로그램
운영체제의 목표
- 사용자 프로그램을 실행하고 사용자 문제를 더 쉽게 해결한다.
- 컴퓨터 시스템을 더 사용하기 쉽게 만든다.
- 컴퓨터 하드웨어를 효율적으로 사용한다.
컴퓨터 시스템 구조
- CPU와 Device controller는 동시에 작동한다.
- Memory controller는 메모리에 대한 접근을 동기화한다. (CPU 클럭에 의해 메모리 접근이 이루어진다. 아무 때나 메모리에 접근해서 값을 가져올 수 있는 게 아님)
컴퓨터 연산
- Start-up
- Bootstrap 프로그램: 컴퓨터 전원이 켜질 때 가장 먼저 실행되는 프로그램
- ROM이나 EEPROM에 저장된다.
- CPU 레지스터, device controller, 메모리를 초기화한다.
- OS 커널을 로드하고 시작한다.
- System daemon
- 커널이 백그라운드에서 작동하는 전체 시간 동안 작동한다.
- "init"이 첫 프로세스이며, 이 프로세스가 많은 다른 daemon 프로세스를 시작한다.
- Bootstrap 프로그램: 컴퓨터 전원이 켜질 때 가장 먼저 실행되는 프로그램
- Interrupt
- Interrupt 핸들러를 실행하기 위해 CPU를 멈추는 이벤트
- interrupt 핸들링은 CPU의 핵심 동작 중 하나이다.
- 메모리의 다른 위치로 넘어가기 전에 interrupt 된 instruction의 현재 주소와 레지스터의 상태를 저장해야 한다.
폰 노이만 아키텍처
Instruction과 data가 CPU와 단일 링크로 연결된 메모리에 저장되는 구조. (Instruction과 data가 같은 메모리에 저장되는 게 특징이다.)
I/O 구조
- Device controller
- Device 안에 있는 하나의 하드웨어
- CPU와 Device controller는 bus를 통해 연결되어있다.
- Device driver
- OS가 device를 컨트롤하기 위한 명령을 수행하는 소프트웨어
- OS별로 다른 device driver가 필요하다.
- I/O 연산
- Device driver는 device controller의 레지스터로부터 값을 가져온다.
- Device controller가 레지스터의 내용을 검사한다.
- Device controller가 데이터를 전송한다.
- 데이터 전송이 끝나고 device controller는 interrupt를 발생시킨다.
- Device driver는 OS로 제어를 넘긴다.
DMA (Direct Memory Access)
주변 장치들이 메모리에 접근하여 값을 읽고 쓸 수 있도록 하는 기능
- DMA가 없을 때
- DMA가 있을 때
멀티 프로세서 시스템
- Multiprocessor를 사용하는 이유
- CPU 한 개의 성능 향상이 기술적으로 한계에 도달함. 따라서 성능 향상을 위해 Core의 개수를 증가시킴.
- 장점
- Throughput이 증가한다. (But, CPU개수와 성능은 비례하지 않는다. why? CPU가 늘어갈수록 CPU 간의 오버헤드가 증가하기 때문)
- Reliability가 증가한다.
- Graceful degration, fault tolerant: CPU 1개가 고장 나더라도 이에 맞춰서 성능이 저하될 뿐, 컴퓨터가 망가지지 않는다.
- 단점
- 싱글 프로세서 시스템에서 실행하던 프로그램을 멀티 프로세서 시스템에서 실행하면 CPU 1개의 성능밖에 나오지 않는다. 그래서 프로그램을 멀티 프로세서에 맞게 프로그램을 다시 만들어야 한다.
운영체제의 핵심 기능
- Multi-Programming
- CPU utilization을 향상시킨다.
- Job pooling과 Job switching을 통해 CPU를 최대한 활용한다.
- Time sharing (multitasking)
- 매우 빠른 속도로 작업을 switching 해서 동시에 작업을 처리하는 것처럼 보인다.
- Process
- Job scheduling from job queue, run queue
- Swapping
- Physical memory & Logical memory
Kernel mode vs. User mode
- Kernel mode와 User mode를 나눈 이유
- 모든 사용자 및 프로그램이 시스템의 아주 낮은 단계로부터 여러 심각한 오류를 발생시킬 수 있기 때문
- Kernel mode
- 모든 시스템 메모리에 접근할 수 있고 모든 CPU명령을 실행할 수 있다.
- User mode
- 사용자 프로그램의 코드가 실행된다.
- 접근할 수 있는 메모리 범위와 실행할 수 있는 instruction에도 제약이 있고, 하드웨어에 직접적으로 접근이 불가능하다.
- System call을 호출 시 mode bit를 사용하여 kernel mode로 전환된다.
- Priviliaged instruction
- 커널 모드에서만 실행할 수 있는 인스트럭션. 부주의하게 사용할 시 시스템을 손상시킬 수 있다.
- System call
- 사용자 프로그램이 OS로 어떠한 서비스를 요청할 수 있는 방법
- 소프트웨어 interrupt에 해당한다.
반응형
'컴퓨터공학 > 운영체제' 카테고리의 다른 글
[운영체제] 데드락 (0) | 2019.10.30 |
---|---|
[운영체제] 프로세스 스케줄링 (0) | 2019.10.29 |
[운영체제] 멀티스레드 프로그래밍 (0) | 2019.10.29 |
[운영체제] 프로세스 (0) | 2019.10.29 |
[운영체제] 시스템 구조 (0) | 2019.10.28 |
댓글
링크
공지사항
최근에 달린 댓글
- Total
- Today
- Yesterday