##본 포스팅은 운영체제 강의 '이화여자대학교 운영체제 강의 - 반효경 교수님'를 보고 정리한 내용입니다.
컴퓨터 시스템 구조
(1강에서 정리했던 내용을 제외한 나머지를 요약해보자면)
> mode bit
CPU를 운영체제가 실행하는 것인지, 사용자 프로그램이 실행하는 것인지 구분하게 두는 비트
1: 사용자 모드 > user mode (제한된 기계어)
0: 모니터 모드(OS 코드 수행) > kernel mode (특권 명령 가능)
사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보호 장치의 역할
위험한 명령(특권 명령)의 경우 커널 모드에서만 수행 가능하도록 하며, 특권 명령이 감지되면 자동으로 커널 모드로 바뀌게 된다.
'바뀌는 것'은 Interruption, Exception을 통해 이뤄진다.
> 레지스터
CPU에서 기계어를 가지고 연산을 수행할 때, 중간 저장소로 사용이 된다.
그 중 '프로그램 카운터'는 다음번에 실행할 명령이 저장될 메모리 주소를 저장하고 있다.
한 명령어를 끝내면 Program Counter는 다음 명령어를 저장하게 된다.
> interrupt
CPU는 작업이 끝날 때마다 Interrupt line을 체크하여, 현재 interrupt가 없는지 체크해본다.
interrupt는 i/o 장치들에 의해서 '나 작업 도와줘, 파일 읽어줘'라며 던져지게 된다.
운영체제가 CPU를 뺏고싶다면 부가적인 하드웨어인 'timer'를 사용한다.
이 timer는 timer interrupt를 발생시키며, 미리 세팅된 시간이 끝나면 제어권이 자동으로 운영체제에게 가게 된다.
무한 루프 등의 특정 프로그램이 독점하는 것으로부터 방지한다.
> system call
프로그램이 실행되다가 '파일을 읽고싶다면' CPU는 i/o 장치를 전담하는 (예를 들어) Disk controller에게 부탁을 하게 된다.
하지만, 그러한 기계어는 '특권 명령'에 속한다.
모든 i/o 장치에게 부탁하는 명령어는 '특권 명령'에 속하므로, 프로그램이 CPU를 통해 i/o 장치에게 부탁하는 것은 "시스템 콜"을 거쳐야만 한다.
이 경우, 프로그램은 스스로 운영체제를 불러 커널 함수를 호출해야하며, 그러기 위해서는 CPU를 운영체제에게 넘겨야한다.
프로그램은 스스로 인터럽트를 걸어 명령을 부탁한다.
정리를 하자면,
아래 두가지는 넓은 의미로 Interrupt이다.
- Interrupt (하드웨어 인터럽트) : timer나 controller가 발생시킨 하드웨어 인터럽트
- Trap (소프트웨어 인터럽트) : exception, system call
퀴즈(서술형) : 운영체제에게 CPU가 넘어가는 경우는?
공통적으로 인터럽트 라인을 세팅하는 경우,
1) 하드웨어 장치들이 인터럽트를 거는 경우
2) 소프트웨어들이 스스로 인터럽트를 거는 경우(system call)
3) 권한이 없는 기계어를 실행하려는 경우
4) exception이 발생하는 경우
퀴즈(서술형) : CPU가 사용자 프로그램에게 있다가 운영체제에게 뺏기는 경우는?
1) 타이머로 인해 뺏기는 경우
2) 다 사용하여 넘겨주는 경우
운영체제는 인터럽트 라인에서 인터럽트를 확인한 후에, CPU를 어디에 넘겨줄지 결정한다.
> 인터럽트 관련 용어
- 인터럽트 벡터 : 해당 인터럽트의 처리 루틴 주소를 가지고 있음
- 인터럽트 처리 루틴 : 인터럽트 핸들러
**
운영체제 : 소프트웨어
CPU : 하드웨어
device controller : 하드웨어
입출력
> 동기식 입출력 (synchronous I/O)
'립싱크', '싱크로나이즈 스위밍' 할 때의 그 '싱크'
시간으로 다 맞아 떨어져야한다는 의미이다.
- I/O 요청 후 입출력 작업이 완료가 된 이후에야 제어가 사용자 프로그램에게 넘어감
- CPU 낭비될 수 있음
- I/O 장치도 하나밖에 돌아가지 못하기 때문에 I/O 장치도 낭비 (프린트 중에는 키보드 입력 못함)
> 비동기식 입출력 (asynchronous I/O)
- I/O 작업을 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감
동기식 입출력이 일반적이지만, I/O 결과가 무관한 경우에는 비동기식 입출력이 효율적이다.
'System > OS' 카테고리의 다른 글
운영체제 3-3~3-4] 스케줄러 (0) | 2021.09.26 |
---|---|
운영체제 3-1~3-2] 프로세스 (0) | 2021.09.26 |
운영체제 2-1 ~ 2-2] 운영체제의 개요 (0) | 2021.09.19 |
운영체제 1-2] 운영체제의 개요 (0) | 2021.09.12 |
운영체제 1-1] 운영체제의 개요 (0) | 2021.09.12 |