컴퓨터 시스템 구조
- cpu에는 instruction set에 따라서 N bytes로 구성된 기계어 조합이 구성되어있다. 그래서 매 순간 CPU는 메모리에 어느 주소에 담긴 명령어들을 불러와서 일을 수행하게됨.
- cpu에는 메모리 주소를 가르키는 pc 레지스터에서 가리키는 메모리 위치에 가서 명령어를 불러온다. 불러오자마자 pc + N byte
- cpu는 다음 순서의 명령어를 실행하기 전에 interrupt를 체크한다.
- ⭐️만약 인터럽트가 들어왔다면 하던 작업을 멈추고 CPU 제어권을 OS에게 주게 됨.
- ⭐️OS는 인터럽트 상황에 맞게 처리해야 할 커널 함수를 수행한다.
- 항상 순차적 x. 함수 호출이나 제어 구조가 오면 JMP하게됨.
- mode bit = 0 or 1
- 0 : 모든 기계어 집합 실행 가능/운영체제가 cpu를 가지고 있을 때
- IO 디바이스를 접근하는 모든 명령어는 OS한테 요청하는 과정을 반드시 겪어야 함. (mode bit = 0일 때)
- ✅ I/O 작업은 OS를 통한 커널 작업을 거쳐야만 가능
- 사용자 프로그램이 I/O를 요청할 때에는 직접 못하고, 운영체제한테 요청해야함 ➡️ system call
- * system call : 의도적인 interrupt line 설정. ➡️ software interrupt(trap)
- IO 디바이스를 접근하는 모든 명령어는 OS한테 요청하는 과정을 반드시 겪어야 함. (mode bit = 0일 때)
- 1 : 한정된 기계어(명령어)만 실행 가능
- 0 : 모든 기계어 집합 실행 가능/운영체제가 cpu를 가지고 있을 때
- timer : cpu 제어권을 넘길 때 마다 시간을 할당해줌.
저장장치 계층 구조
volatility: 휘발성
하늘색이 휘발성(전원 꺼지면 날아감), 검정색이 비휘발성
프로그램이 어떻게 실행되는가
프로그램은 File System에 실행파일로 저장되어 있다.
프로그램 실행 ➡️ Vurtual Memory에(stack/data/code) ➡️ Physical Memory
Swap area? physical 메모리의 저장공간 부족을 관리하기 위한 저장 공간.
커널 주소 내용
- code
- 커널 코드
- 시스템콜, 인터럽트 처리 코드
- 자원 관리
- 서비스 제공
- 커널 함수의 호출 = 시스템 콜
- 커널 코드
- data
- 하드웨어 자원 관리를 위한 자료구조들
- 프로세스를 관리하기 위한 자료구조들(Process Control Block: 하나의 프로그램을 관리하기 위한 자료구조
- stack
- 함수를 호출/리턴할 때 사용
동기식 입출력과 비동기식 입출력
1. Synchronous
- Synchronous의 뜻 : 동작 등을 서로 시간 별로 맞추는 것
- I/O 요청 후 입출력 작업이 완료된 후에 사용자 프로그램이 다음 일을 할 수 있음.
2. Asynchronous
asynchronous는 Interrupt-based다.
즉,asynchro는 I/O 하라고 던져놓고, 바로 cpu 가져와서 다른 일을 수행한다. (= concerrently)
- syn/asyn 모두 I/O 작업이 끝났을 때는 인터럽트를 통해서 알려준다. 디바이스 컨트롤러는 자기만의 프로세서를 가지고 있고, I/O 버스를 통해 인터럽트 신호를 보내어, cpu와 I/O 작업을 수행한다.
- synch와 asynch 차이는 해야할 일에 따라 다르다. I/O에서 가져온 데이터를 반드시 사용해야 하는 경우는 synch, I/O에서 가져온 데이터와 별상관 없는 일이면 asynch.
Direct Memory Access
유저가 직접적으로 메모리에 접근할 수 있는 장치(hw 중 메모리에 접근할 수 있는 장치는 CPU랑 DMA가 유일하다.)
I/O 장치에서 계속 인터럽트를 걸면 문제가 생기니까 CPU의 중재 없이 디바이스의 버퍼에 저장된 내용을 메모리에 block 단위로 전송하기 위한 장치이다. 이때 전송은 device controller와 DMA를 거쳐서 진행된다.
Reference
이화여자대학교 반효경 교수님의 KMOC 강의
한국항공대학교 송동호 교수님의 컴퓨터 운영체제 및 실습
운영체제와 정보기술의 원리 책
'CS > OS' 카테고리의 다른 글
[OS] 운영체제가 하는 일4가지 (0) | 2023.04.15 |
---|---|
[OS] 프로세스 | 프로세스의 상태 | PCB | context switching (0) | 2023.04.07 |
[OS] Mode bit | Device Controller | Interrupt (0) | 2023.03.17 |
[OS] os를 공부하기 위해 알아야 하는 용어들 (0) | 2023.03.10 |
[OS] 운영체제 (4) | 2023.03.09 |