KOCW 반효경 교수님 운영체제 강의 정리
이 글은 공부한 것을 복습 및 기록하기 위한 게시물입니다.
잘못된 정보가 기입되어 있을 수 있으니 주의해주시기 바랍니다.
강의 링크 : http://www.kocw.net/home/cview.do?lid=36f314da6dc42576
1. 컴퓨터 시스템 구조
CPU의 작업공간은 메모리이며 Clock Cycle마다 메모리에서 기계어를 하나씩 읽어서 실행하게 된다.
Device는 Device Controller에 의해 제어된다.
Devcie Controller는 일종의 작은 CPU역할을 하게 되는 것이다.
Device Controller 또한 작업공간이 필요하며 그것을 Local Buffer라 칭한다.
CPU는 메모리에서 instruction(명령어)를 읽어서 실행하게 된다.
CPU안에는 메모리보다 빠르고 정보를 저장할 수 있는 Regiter가 존재한다.
Mode bit는 CPU를 사용하는 것이 운영체제(커널)인지 사용자 프로그램인지 구분할 수 있게 해주는 bit이다.
Interrupt line은 I/O Device에서 요청되는 것을 캐치하는 것이다.
I/O Devcie에서 어떠한 요청이 오게되면 CPU는 Device Controller에게 해당 요청을 처리하게 한다.
Device Controller는 Local buffer에 처리된 결과를 저장해놓는다.
CPU는 처리된 결과 값을 가져와서 다음 동작을 하게 된다.
무한 루프 프로그램이 실행 될때는 CPU가 제대로 된 시분할 동작을 하지 못하게 된다.
이것을 방지하기 위해서 Timer가 존재한다.
Timer는 Interrupt를 통해서 CPU에게 알려주게 된다.
CPU는 1가지의 instruction을 완료하면 Interrupt line을 확인한 후 Interrupt가 없을 시 다음 instruction을 수행한다.
운영체제가 사용자 프로그램의 CPU 소유권을 관리하며 사용자 프로그램은 보안적인 문제 때문에 직접 I/O Device에 접근할 수 없다.
I/O Device에 접근할 수 있는 모든 instruction은 운영체제를 통해서만 접근할 수 있게 된다.
예를 들어 '사용자 프로그램A'에서 I/O Device의 값이 필요하게 되면 해당 Device Controller에게 동작을 요청한다.
Device Controller가 동작이 완료된 후 자신의 Local Buffer에 결과 값을 넣게 되면 CPU에게 Interrupt를 걸게 된다.
CPU는 interrupt가 오게 되면 진행중이던 다른 '사용자 프로그램B'를 중단하고 운영체제에게 CPU 소유권을 넘기게 된다.
운영체제는 Interrupt 요청을 확인하고 해당 Local buffer 값을 해당 동작을 요청한 '사용자 프로그램A' 메모리에 Copy한다.
이후 interrupt로 인해 중단된 '사용자 프로그램B'에게 timer 시간이 남아있을 때까지 CPU소유권을 넘겨주게 되면서
I/O Device 값이 필요했던 '사용자 프로그램A'에게도 차례가 되면 CPU 소유권을 주게 된다.
2. Mode bit
Mode bit가 0일 때(OS가 CPU를 가지고 있을 때)는 모든 Instruction을 사용할 수 있다.
-> 메모리 영역, I/O Device등등..
Mode bit가 1일 때(사용파 프로그램이 CPU를 가지고 있을 때)는 보안문제 때문에 제한적인 Instruction만 수행하게 되어 있다.
운영체제가 사용자 프로그램에게 CPU 소유권을 넘겨줄 때는 Mode bit를 1로 변경한 후 넘겨주게 되어있다.
Interrupt가 들어오게 되면 CPU 소유권이 운영체제에게 넘어가면서 자동으로 Mode bit가 0으로 변경된다.
3. Timer
TImer는 특정 사용자 프로그램이 CPU를 독점하는 것을 방지하기 위해 존재한다.
4. Device Controller
메모리는 원칙적으로 CPU만 접근할 수 있다.
CPU는 메모리와 Local Buffer에 접근이 가능하다.
Device Controller는 I/O Device의 작업이 끝났을 경우 Interrupt로 CPU에게 그 사실을 알린다.
운영체제 코드 중 각 Device를 접근하기 위한 Device 인터페이스가 존재하게 된다.
Device Driver는 해당 Device 인터페이스에 맞게 접근할 수 있게 해주는 S/W 모듈이다.
그래서 I/O Device(H/W)를 설치하게 되면 해당 Device에 맞는 Device Driver를 설치해야 한다.
예를 들어 메모리의 Instruction 중 I/O Device에 접근을 해야하는 경우가 생긴다면 Device Driver를 통해서 I/O Device의 Device Controller에게 명령을 하게 된다.
예를 들어 Disk에게 명령을 했다고 가정할 때 Device Driver는 Disk에 헤더를 직접 움직이게 하는 코드가 아니라 Disk Controller를 제어하는 코드가 되는 것이다.
CPU 또한 직접 일을 하는 것이 아닌 메모리에 있는 instruction을 통해 지시를 받아 일을 하는 것이다.
Disk Contorller가 실행하는 Device Driver의 instruction 코드는 Disk가 가지고 있는 F/W를 참고하여 실행하게 된다.
Device Driver는 CPU가 실행하는 코드를 담고있다.
5. 입출력(I/O)의 수행 & 시스템 콜 & 인터럽트(Interrupt)
모든 I/O 관련 명령은 운영체제만이 사용할 수 있는 특권명령이다.
사용자 프로그램에서 I/O를 사용할 수 있는 방법은 바로 시스템 콜이다.
시스템 콜은 사용자 프로그램이 OS의 서비스를 받기 위해 커널 함수를 호출하는 것이다.
시스템 콜은 일반 함수호출과 다른다.
사용자 프로그램 안에서의 함수호출은 프로그램안에 메모리 주소를 바꾸면 된다.
시스템 콜은 메모리 주소를 바꾼다고 되는 것이 아닌 복잡한 작업이다.
프로그램이 운영체제에게 어떤 것을 요구하기 위해서 자발적으로 CPU에게 Interrupt를 요청할 수 있다.
운영체제 입장에서는 시스템 콜이 들어왔다고 해서 바로 실행하는 것이 아니라 올바른 명령인지와
요청을 걸어온 사용자 프로그램이 해당 권한이 있는지를 확인한 후 실행하게 된다.
일반적인 Interrupt의 의미는 H/W가 발생시킨 Interrupt이며 S/W가 발생시킨 Interrupt는 Trap이라 한다.
I/O Device를 사용하기 위한 Interrupt는 H/W와 S/W 둘 다 해당하게 된다.I/O 요청은 S/W, I/O 응답은 H/W
Interrupt 요청이 들어왔을 때 어떤 식으로 대응을 해줄 것인지는 이미 운영체제(커널) 에 함수가 있다.
그것을 Interrupt Service Routine or Interrupt Handler라고 한다.
Interrupt 요청이 들어왔을 때 어떠한 ISR로 가야하는지 표시해주는 것이 Interrupt Vector이다.
운영체제는 CPU를 잡을 이유가 없으며 Interrupt가 발생할 시에만 사용하게 된다.
CPU는 항상 사용자 프로그램에 의해서만 사용되어야 한다.
Deivce Driver 부분이 이해하는데 어려웠다..
'Computer Science > OS' 카테고리의 다른 글
6. Process Management (0) | 2021.03.07 |
---|---|
5. Process 2~3 (0) | 2021.03.06 |
4. Process 1 (0) | 2021.02.27 |
3. System Structure & Program Execution 2 (0) | 2021.02.11 |
1. Introduction to Operating Systems (0) | 2021.02.06 |