운영체제
4. System Structure & Program Execution 2
홍비
2022. 1. 29. 17:26
이화여자대학교 반효경 교수님의 운영체제 강의를 듣고 정리한 내용이다.
# 3강 복습
- computer는 host라고도 불림(host computer)
- instruction 주소는 하나당 약 4byte
- CPU는 아주 빠른 일꾼임
- 처음에 컴퓨터가 켜져서부터 꺼질 때까지 CPU는 항상 '프로그램 카운터'라는 레지스터가 가리키는 메모리 주소에서 instruction 하나를 읽어 실행하는 일만 실행
- (전) instruction → interrupt가 있는지 확인. 있다면? CPU 제어권이 OS에게 넘어감 → 없다면, 다른 instruction 실행
- '인터럽트 벡터'는 각 인터럽트 종류별로 몇번 라인에 인터럽트가 들어왔는지 나타내는 엔트리
- = 엔트리 + 주소 쌍으로 이루어져있음. <interrupt number, 주소>
- 그 인터럽트가 들어왔을 때 운영체제의 어느 곳에 있는 instruction을 실행할지 저장한 주소
- 실제해야 하는 일 = 인터럽트 처리 루틴(=Interrupt Service Routine)
- 일반적인 interrupt = 하드웨어 인터럽트
- 프로그램이 필요에 따라 발생시키는 인터럽트 = Trap
<동기식 입출력과 비동기식 입출력>
동기식 입출력(synchronous I/O)
- I/O 요청 후, 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감
- 구현방법 1) I/O가 끝날 때까지 CPU를 낭비시킴 → 매시점 하나의 I/O만 일어날 수 있음
- 구현방법2) I/O가 완료될 때까지 해당 프로그램에서 CPU를 뺴앗음 → I/O 처리를 기다리는 줄에 그 프로그램을 줄세움 → 다른 프로그램에게 CPU를 줌
비동기식 입출력(asynchronous I/O)
- I/O가 시작된 후, 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에서 즉시 넘어감
※ 두 경우 모두 I/O의 완료는 인터럽트로 알려줌
< DMA(Direct Memory Access) >
- 빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해 사용
- CPU의 중재 없이 device controller가 device의 buffer storage의 내용을 메모리에 block 단위로 직접 전송
- 바이트 단위가 아니라 block 단위로 인터럽트 발생시킴
< 서로 다른 입출력 명령어 >
- I/O를 수행하는 special instruction에 의해 발생
- Memory Mapped I/O에 의해 발생
< 저장장치 계층구조 >
- 위로 갈수록 보통 속도가 빠른 매체를 사용
- 위로 갈수록 단위 공간 당 가격이 비싸며, 용량은 적음
- 연두색은 휘발성, 분홍색은 비휘발성 매체
- 휘발성 매체(레지스터, 캐시 메모리, 메인 메모리)
- CPU에서 직접 접근 가능(byte 단위로 접근가능해야 함)
- 처리속도가 빠름
- 비휘발성 매체
- CPU가 직접 접근해서 처리 불가
- Disk는 sector단위로 접근이 가능
- Caching(캐싱) : 주로 재사용을 위한 것으로, copying information into faster storage system
<프로그램 실행(메모리 load)>
- data : 변수(자료구조)
- code : 기계어 코드
<커널 주소 공간의 내용>
- 운영체제의 코드는 여러 사용자 프로그램들의 요청에 따라 불러서 사용할 수 있음
<사용자 프로그램이 사용하는 함수>
- 함수(function)
- 사용자 정의 함수 - 자신의 프로그램에서 정의한 함수
- 라이브러리 함수 - 자신의 프로그램에서 정의하지 않고 갖다 쓴 함수로, 자신의 프로그램의 실행파일에 포함되어 있음
- 커널 함수 - 운영체제 프로그램의 함수로, 커널 함수의 호출은 시스템콜임