반응형
** KOCW에서 반효경 교수님의 운영체제(2014년) 강의를 수강한 내용을 정리한 글입니다.
http://www.kocw.net/home/cview.do?cid=3646706b4347ef09
컴퓨터 시스템 구조
- 우측 장치들은 I/O 장치
- CPU : 명령을 처리
- Memory : CPU의 작업 공간
- Interrupt : 특정 이유로 작업권을 넘김 (I/O 장치의 입력, 처리 완료 등)
- Timer : CPU를 점유하는 시간을 측정하고, 너무 길면 멈추게 하는 하드웨어
- Time sharing 구현에 이용
- I/O 장치들은 각각의 Controller(일종의 작은 CPU)가 관리하고 처리한다
- 초기에는 OS가 CPU를 사용하고, 이후에는 순차적으로 사용자 프로그램과 OS가 CPU를 사용한다
Mode bit
- 1 : 사용자 모드 → 사용자 프로그램 수행
- 0 : 모니터 모드(커널 모드) → OS 코드 수행
- 사용자 프로그램은 나쁜 짓을 할 수 있기 때문!
- 보안을 해칠 수 있는 중요 명령어는 모니터 모드에서만 수행 가능한 ‘특권 명령’으로 규정
Interrupt
- 인터럽트 당한 시점의 레지스터와 Program counter를 save한 후, CPU의 제어를 인터럽트 처리 루틴에 넘긴다.
- 하드웨어 인터럽트 : 하드웨어(I/O 장치 등)가 발생시킴
- Timer, I/O장치의 Controller 등
- 소프트웨어 인터럽트(Trap) : 넓은 의미로 포함되는 개념 / Exception, System call(사용자 프로그램이 커널 함수 호출)
- 인터럽트 벡터 : 해당 인터럽트 처리 루틴 주소를 가지고 있음
- 인터럽트 처리 루틴(인터럽트 핸들러) : 해당 인터럽트를 처리하는 커널 함수
- 현대의 운영체제는 인터럽트에 의해 구동됨!
입출력(I/O)의 수행
- 모든 입출력 명령은 특권 명령 → 사용자 프로그램은 어떻게 I/O를 하는가?
- System call(Trap의 일종) → 운영체제에 I/O 요청
- 올바른 요청인지 OS가 확인 후 수행
동기식/비동기식 입출력
- 동기식 입출력(Synchronous I/O)
- I/O를 요청하고, 입출력 작업이 완료된 후에 사용자 프로그램에게 제어가 넘어감
- 구현 방법 1 : I/O 끝날 때까지 CPU 낭비
- 구현 방법 2 : I/O 완료될 때까지(해당 프로그램을 I/O 처리를 기다리는 줄에 세워 놓고) 다른 프로그램에게 CPU를 줌
- I/O를 요청하고, 입출력 작업이 완료된 후에 사용자 프로그램에게 제어가 넘어감
- 비동기식 입출력(Aynchronous I/O)
- I/O 요청 직후 제어가 사용자 프로그램에 넘어감(입출력 요청과 입출력이 별도의 싸이클)
- 두 경우 모두 I/O 완료는 인터럽트로 알려준다.
DMA(Direct Memory Access)
- 입출력 장치를 빠르게 처리하기 위함
- CPU 중재 없이, Device controller가 Device buffer storage 내용을 메모리에 Block 단위로 직접 전송
- Byte가 아닌 Block 단위로 인터럽트를 발생시킴
저장장치 계층 구조
- Primary(Registers, Cache Memory, Main Memory)
- 빠르고 비쌈 → 용량이 낮음
- 휘발성
- CPU에서 직접 접근 가능(Executable)
- Secondary
- 느리고 쌈 → 용량이 큼
- 비휘발성
- CPU에서 직접 접근 불가능
- Caching이란? → 재사용을 목적으로, 하위 메모리에서 불러온 정보를 보다 빠른 메모리에 임시로 저장하는 것
프로그램의 실행(Memory load)
- File System에 저장된 파일을 실행하면 → Virtual Memory를 거쳐 → Physical memory(Virtual Memory의 반대 개념)에 프로세스로 들어감
- Virtual Memory(가상 메모리) : 특정 프로세스 할당되는, 0번지부터 시작하는 가상의 주소 공간
- Kernel Address space를 확대하면 아래와 같다
반응형
'Computer Science > 운영체제' 카테고리의 다른 글
6강) 프로세스 동기화 (Process Synchronization) (0) | 2023.01.27 |
---|---|
5강) CPU 스케줄링 (CPU Scheduling) (0) | 2023.01.26 |
4강) 프로세스 관리, 시스템 콜의 종류(Process management, types of system calls) (0) | 2023.01.25 |
3강) 프로세스의 뜻과 상태, 쓰레드의 뜻과 장점 (Concept and states of Process, concept and profit of threads) (0) | 2023.01.24 |
1강) 운영체제란? (0) | 2023.01.21 |