동기식 입출력과 비동기식 입출력
동기식 입출력(synchronous I/O)
- I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감
비동기식 입출력(asynchronous I/O)
- I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감
- 두 경우 모두 I/O의 완료는 인터럽트로 알려줌
- 요청하고 CPU가 다른 instruction을 실행할 수 있으면 비동기, 아니면 동기다.
DMA(Direct Memory Access)
CPU가 interrupt를 너무 많이 당한다. → CPU 효율성 떨어짐
memory에 접근할 수 있는 controller
DMA가 직접 interrupt를 처리한다.
- device controller가 buffer에 한 block이나 page정도의 양의 data가 쌓이면
- CPU의 중재 없이 device controller가 device의 buffer storage의 내용을 메모리에 block 단위로 직접 전송
- CPU에게 interrupt를 걸어서 메모리에 올라왔다고 보고
서로 다른 입출력 명령어
I/O를 하는 방법은 2가지가 있다.
일반적인 경우(좌측)
- 메모리만 접근하는 명령어, I/O만 접근하는 명령어가 나눠져있는 경우
- I/O를 수행하는 special instruction을 통해 I/O device에 접근
Memory Mapped I/O(우측)
- I/O device들에다가 메모리 주소를 매겨서 memory 접근 instruction을 통해 접근 가능
저장장치 계층 구조
위로 갈수록 속도가 빠르고, 단위공간당 가격 비쌈
volatile: 휘발성 물질(연두색 부분)
CPU가 직접 제어 가능한 부분: primary(executable)
- byte단위로 접근 가능
secondary 부분: byte단위로 접근 불가능(sector단위 접근)
Caching
- 재사용을 통해 더 빠르게 동작하기 위해 사용
- 빠른 storage system으로 정보를 복사
프로그램의 실행(메모리 load)
프로그램이 어떻게 컴퓨터에서 실행될까?
프로그램은 실행파일의 형태로 disk에 저장됨, 실행시키게 되면 메모리로 올라가고, 프로세스가 된다.
프로그램을 실행시키면 프로그램만의 독자적인 메모리 주소공간(Address space)이 형성됨
- 주소공간은 code, data, stack으로 구성됨
- 사실 이 주소공간은 머릿속에만 존재한다는 의미에서 Virtual Memory라고 함
- 이 독자적인 주소공간을 모두 다 물리적인 메모리 공간에 올리지 않고 필요할때마다 사용한다.
- 지금 사용하지 않는 부분은 disk의 swap area에 저장됨(내린다고 표현)
- swap area로 사용하는 하드디스크는 전원이 나가면 없어진다.
- 메모리 연장공간으로써 사용한다.
- 오른쪽에 file system을 저장하는 disk와 다르다(disk는 비휘발성).
커널 주소 공간의 내용
code
- 어떤 인터럽트가 들어오면 어떤 동작을 처리하는지에 대한 코드가 커널코드에 적혀있다.
data
- PCB(Process Control Block)
- 프로그램이 하나 실행되면 그 프로그램을 관리하기위한 자료구조가 커널에 만들어지게 된다.
stack
- 여러 사용자들의 프로세스들은 system call을 통해 커널 코드를 요청해서 사용한다.
- 운영체제도 함수 구조로 코드가 작성되어 있기 때문에 함수를 호출하거나 return할 때 stack영역을 사용해야 한다.
- 사용자 프로그램마다 kernel stack을 따로 둔다.
- stack에서 어떤 process가 커널 함수를 사용했는지 stack에 저장한다.
사용자 프로그램이 사용하는 함수
사실 모든 프로그램은 함수 형태로 작성된다.
함수
- 사용자 정의 함수
- 자신의 프로그램에서 정의한 함수
- 라이브러리 함수
- 자신의 프로그램에서 정의하지 않고 갖다 쓴 함수
- 자신의 프로그램의 실행 파일에 포함되어 있음
- 커널 함수
- 운영체제 프로그램의 함수
- 커널 함수의 호출 = system call
'sw사관학교정글 > OS 개념정리' 카테고리의 다른 글
[week08] KOCW 운영체제(반효경교수님) - Process Management (0) | 2021.12.30 |
---|---|
[week08] KOCW 운영체제(반효경교수님) - Process 2 (0) | 2021.12.30 |
[week08] KOCW 운영체제(반효경교수님) - Process 1 (0) | 2021.12.30 |
[week08] KOCW 운영체제(반효경교수님) - System Structure & Program Execution 1 (0) | 2021.12.30 |
[week08] KOCW 운영체제(반효경교수님) - 강의소개 (0) | 2021.12.30 |