운영체제 - 반효경 2강
컴퓨터 시스템 구조
Memory
: CPU의 작업 공간, CPU는 매시간 메모리에서instruction(기계어)
을 읽어 실행한다.CPU
: 매시간 메모리에서instruction(기계어)
를 읽어 처리함. 그것만 함.registers
: 메모리보다 더 빠른 정보를 저장할 수 있는 공간mode bit
: CPU에서 실행되는 것이 운영체제(0)인지, 사용자 프로그램(1)인지 구분해줌. mode bit = 0일 때는 커널 모드로 모든 접근이 가능, mode bit = 1이면 특정 명령만 수행 가능(I/O 접근 X 등)interrupt line
: CPU가 다른 일을 해야한다는 interrupt를 받으면 이 interrupt line이 해당 라인을 읽고 OS에게 CPU 점유권을 넘겨준다. ex) I/O 작업이 끝날 때, 특정 프로그램이 CPU를 오랫동안 점유할 때
I/O device
: CPU와 I/O device는 속도 차이가 많이 남. 이런 차이 때문에 CPU가 직접 관리 X, 일반 사용자 프로그램은 I/O device에 직접 접근 X -> OS를 통해서만 접근 가능device controller
: I/O device들은 각자 device controller라는 컴퓨터로 치면 CPU의 역할을 하는 controller가 존재한다. I/O device는 CPU가 아니라 각 controller가 관리하게 된다.- device driver = CPU가 쓰기 위한 코드, 각 장치별 처리 루틴 -> software
- device controller = 일종의 작은 CPU -> hardware
local buffer
: CPU의 작업 공간인 memory가 있는 것처럼 I/O device의 작업공간인 buffer가 존재한다.
timer
: 특정 프로그램이 timer에 세팅된 시간을 넘어서 CPU를 점유하고 있다면 interrupt를 발생시켜 OS에게 CPU를 넘겨줌(time sharing(시분할) 구현을 위해 사용)DMA controller
: CPU가 직접 I/O interrupt를 받으면 너무 자주 CPU가 사용되어 오버헤드가 큼. DMZ가 I/O device의 local buffer에 있는 데이터를 메모리에 복사해서 넣어주는 역할. 모든 입력이 끝났을 때 한번만 CPU에게 interrupt를 걸어 CPU를 효율적으로 사용.Program counter
: CPU가 프로그램의 어디까지 instruction을 실행했는지 주소를 가지는 register
Interrupt
인터럽트 당한 시점의 레지스터와 program counter를 save한 후 CPU의 제어를 인터럽트 처리 루틴에 넘김
Interrupt
- interrupt(하드웨어 인터럽트) : 하드웨어가 발생시킨 인터럽트
- Trap(소프트웨어 인터럽트) : Exception, System call(프로그램이 커널 함수를 호출하는 경우)
관련 용어
- 언터럽트 벡터 : 인터럽트 마다 어떤 함수를 실행하면 되는지 그 메모리 주소를 가지고 있는 일종의 테이블
- 인터럽트 처리 루틴 : 인터럽트마다 처리해야하는 실제 동작 코드(함수)
System Call
I/O의 수행
- 모든 입출력 명령은 커널 모드에서 실행
- 사용자 프로그램이 I/O를 수행하는 방법
- I/O가 필요함 -> 시스템 콜을 이용 -> 동시에 사용자 프로그램이 직접 인터럽트를 걸어서 OS에게 CPU 제어권을 넘김 -> 요청 수행
동기식/비동기식 입출력
동기식 입출력(synchronous I/O)
- I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감
- 구현 방법 : 1) I/O가 끝날 때까지 CPU를 waiting 시킴, 2) I/O가 완료될 때까지 다른 프로그램에게 CPU를 줌 - 보통 2번을 함(1번은 CPU 낭비)
비동기식 입출력(asynchronous I/O)
- I/O 요청 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감
저장장치 계층 구조
- 맨 위에는 CPU가 존재
- 위의 Primary는 CPU에서 직접 접근 가능한 영역이고 보통 volatility(휘발성)이다.
- Main Memory와 CPU의 속도 차이를 완충시키기 위해 Registers나 Cache Memory가 존재한다.
프로그램의 실행
- 실행 파일 A 실행 -> 각 프로그램의
독자적인
가상 메모리 생성 -> 실제 물리 메모리에는 실제 사용되고 있는 코드만 올라감(메모리 낭비 방지) -> 프로그램 종료 전까지 필요한 부분은 물리 메모리, 그렇지 않은 부분은 Disk의 Swap area에 내려놓음(메모리의 연장 공간으로 Disk를 사용, 휘발성)
커널 주소 공간
- 커널에서는 실제 하드웨어를 관리해야하기 때문에 각 하드웨어마다 자료구조를 하나씩 가지고 있음
- 또 프로세스도 관리하기 때문에 프로세서를 관리하기 위한 자료구조도 가지고 있음(
PCB
) - 커널은 다양한 프로세스에서 시스템 콜을 통해 사용할 수 있기 때문에 각 프로세스마다 서로 다른 커널 스택을 가지고 있음
함수 종류
사용자 정의 함수
: 자신의 프로그램에서 정의한 함수라이브러리 함수
: 자신의 프로그램에서 정의하지 않고 갖다 쓴 함수, 자신의 프로그램의 실행 파일에 포함됨커널 함수
: 운영체제 프로그램의 함수, 커널 함수의 호출 = 시스템 콜
출처)
[운영체제 - 이화여자대학교 | KOCW 공개 강의](http://www.kocw.net/home/cview.do?cid=3646706b4347ef09) |
This post is licensed under CC BY 4.0 by the author.