아래는 강의를 들으며 정리한 내용이고, 모든 내용은 발표자료에 담았다.
따라서 발표자료를 먼저 첨부할 것
https://www.miricanvas.com/v/123negp
메모리 = CPU의 작업공간
하드디스크 : 보조기억장치. I/O device 로 볼 수 있음. 데이터를 메모리로 읽어들이기도, 처리 결과를 파일 데이터로 저장하기도 함
device controller : 각 입출력 장치에 붙어있는 작은 CPU같은 장치. 각 장치를 전담한다.
이들도 각각의 작업 공간이 존재한다. = local buffer
CPU 내부
register : 메모리보다 빠르면서 정보를 저장할 수 있는 작은 공간
mode bit : CPU에서 실행중인 것이 운영체제인지 사용자 프로그램인지 구분해주는 것
interrupt line : 항상 메모리하고만 일하는 CPU에게 입출력 장치의 입력 또는 화면에 출력 또는 디스크 등등 → 메모리 이외에서 일어나는 작업들을 수행하기 위해
timer : 특정 프로그램이 CPU를 독점하는 것을 막는 역할. 프로그램 실행 시 timer에 값을 입력하고 CPU로 넘어감. 세팅된 시간동안 실행하다가 시간이 다 되면 timer가 CPU에 interrupt를 걺. CPU는 인스트럭션 실행 끝나면 interrupt line을 체크함. 들어온 게 있으면 하던 일 멈추고 CPU의 제어권이 사용자 프로그램에서 운영체제로 넘어감.
사용자 프로그램은 입출력 장치에 직접 접근할 수 없음. 입출력 작업은 반드시 운영체제를 통해서 해야 함. 사용자 프로그램에서 입출력 작업이 필요한 경우 CPU 제어권을 OS에 넘기고 CPU에서 키보드 입력을 받고, I/O controller가 요청받은 작업이 끝나면 자신의 local buffer에 들어온 CPU에 interrupt를 걺. OS는 interrupt를 확인하고 사용자 프로그램에 CPU 제어권을 넘겨 줌.
입출력 장치까지 가서 직접 보고 오는 것
입출력 작업이 완료되어야만 제어가 사용자 프로그램에 넘어감
여러 장치가 연결되어있어서 직접 결과를 확인하지 않고 다음 일을 처리하는 것
입출력 요청만 해놓고 결과를 확인하지 않고 CPU제어권을 얻어서 바로 다음 일을 처리함
두 경우 모두 I/O의 완료는 인터럽트로 알려줌
작은 입출력 작업 하나하나에 인터럽트가 걸리면 CPU의 오버헤드 증가
로컬 버퍼에 일정량이 쌓이면 한번에 인터럽트를 걸어서 CPU의 인터럽트 빈도를 줄요 효율성을 증가시킴
위로 갈수록 용량이 적음(가격이 비싸서), 속도가 빠름
연두색 - 휘발성
분홍색 - 비휘발성
Primary : CPU가 직접 접근 가능 → Byte단위로 접근 가능
Secomdary : CPU가 직접 접근 불가 → Sector단위 접근
Caching : 재사용이 목적. 이미 읽어온 데이터가 있으면 속도가 빠른 윗단에서 읽어오는 것
파일 시스템에서 가상 메모리에 올라갔다가 실제 물리 메모리에 올라가 프로세스 실행
가상 메모리에서 그 프로그램의 독자적인 공간인 주소 공간 Address space가 만들어짐.
주소 공간은 각 프로그램마다 만들어지고, code, data, stack으로 구성 됨.
주소공간을 통째로 메모리에 올리면 메모리 낭비가 되기 때문에 당장 필요한 것만 메모리에 올린다.
그렇지 않은 부분은 disk의 swap area에 내려놓는다.
File system 용도의 하드디스크 - 종료되어도 내용이 사라지지 않음. 비 휘발성 용도로 사용
Swap area는 메모리 용량의 한계 때문에 추가적으로 사용됨.
이 주소공간을 물리적 메모리에 다 올리는 것이 아님(메모리 낭비) 당장 필요한 부분만 올림. 그렇지 안은 부분은 디스크의 swap area에 내려놓음
→ 사용자 정의, 라이브러리 모두 실행 파일 안에 함수들이 포함되어 있음.
→ 내 프로그램 안에 들어있는 게 아니라 커널 안에 들어있는 함수. 프로그램에 정의되어있지 않음. 호출만
지금까지 공부한 내용을 바탕으로 이 그림을 이해하고 설명할 수 있다면 ok