[운영체제 스터디]3장-컴퓨터 시스템의 동작 원리
1. 컴퓨터 시스템의 구조
-
컴퓨터 시스템 구조 = 내부장치(CPU, 메모리) + 외부장치(디스크, 키보드, 마우스, 모니터, 네트워크)
-
컨트롤러 : 일종의 작은 CPU로 메모리 및 입출력장치 등 각 하드웨어 장치에 붙어있으면서 이들을 제어한다.
-
어떤 프로그램이 수행되려면 그 프로그램은 메모리에 올라가 있어야 한다.
운영체제 중 항상 메모리에 올라가 있는 부분을 커널(전체 운영체제 중 핵심적인 부분) 이라고 한다.
2. CPU연산과 I/O 연산
-
입출력 장치들의 I/O연산 : 입출력 컨트롤러가 담당
-
컴퓨터 내에서 수행되는 연산 : 메인 CPU가 담당
👉 입출력 장치와 메인 CPU는 동시에 수행이 가능하다.
-
로컬버퍼 : 컨트롤러가 장치로부터 들어오고 나가는 데이터를 임시로 저장하기 위해 가지고 있는 작은 메모리
-
인터럽트 : 컨트롤러들이 CPU의 서비스가 필요할 때 이를 통보하는 방법
👉 로컬버퍼로 읽어오는 작업이 끝나면 컨트롤러는 인터럽트를 발생시켜 CPU에게 보고하게 된다.
3. 인터럽트의 일반적 기능
운영체제 커널에는 인터럽트가 들어왔을 때 해야 할 일이 미리 다 프로그래밍 되어 그 코드가 보관돼 있다.
- 인터럽트 벡터 : 해당 인터럽트 처리 루틴의 주소를 가지고 있음
-
인터럽트 처리 루틴(=인터럽트 핸들러) : 다양한 인터럽트에 대해 각각 처리해야 할 업무들을 정의하고 있는 커널함수
- 하드웨어 인터럽트 : 일반적으로 말하는 인터럽트, 하드웨어가 발생시킨 인터럽트
- 소프트웨어 인터럽트(Trap)
- Exception : 프로그램이 오류를 범한 경우
- System call : 프로그램이 커널함수를 호출하는 경우
4. 인터럽트 핸들링
인터럽트가 발생한 경우에 처리해야 할 일의 절차를 의미
-
레지스터 : CPU에서 명령이 실행 될 때 데이터를 읽거나 쓰면서 사용되는 CPU내부의 임시기억 장치
-
PCB(Process Control Block) : PCB는 각각의 프로그램마다 하나씩 존재하며 해당 프로그램의 어느 부분이 실행 중이었는지 저장하고 있음 (메모리 주소, 레지스터값, 하드웨어 상태 등)
PCB가 필요한 이유 : 인터럽트가 발생해 새로운 명령을 실행하면 기존 레지스터값들이 지워지게 되므로 이들을 기억하기 위해 사용
5. 입출력 구조
동기식 입출력과 비동기식 입출력 (두 경우 모두 I/O의 완료는 인터럽트로 알려줌)
- 동기식 입출력
:I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감-
구현방법 1
:I/O가 끝날 때까지 CPU를 낭비시킴
:매시점 하나의 I/O만 일어날 수 있음
👉동기화가 자동으로 이루어질 수 있다 -
구현방법 2
:I/O가 완료될 때 까지 해당 프로그램에게서 CPU를 빼앗음
:I/O 처리를 기다리는 줄에 그 프로그램을 줄 세움
:다른 프로그램에게 CPU를 줌
👉동기성을 보정하기 위해 장치마다 큐를 두어야 한다
👉일반적으로 사용
-
- 비동기식 입출력
:I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감
6. DMA(Direct Memory Access)
❗ 원칙적으로 메모리는 CPU에 의해서만 접근할 수 있다.
❗ 메모리에 접근하기 위해선 인터럽트를 발생시켜야 하는데, 모든 메모리 접근 연산이 인터럽트를 통해 CPU를 호출한다면 CPU의 사용 효율성이 떨어지는 문제점이 발생한다.
✅ 이러한 비효율성을 극복하기 위해 CPU외 메모리 접근이 가능한 장치를 하나 더 두는데 바로 그것이 DMA이다.
✅ CPU의 중재 없이 device controller가 device 의 buffer storage의 내용을 메모리에 block단위로 직접 전송한다.
DMA는 바이트(byte)단위가 아닌 블록(block)이라는 큰 단위로 정보를 전송한다.
7. 저장장치의 구조
-
주기억장치 : 메모리, 휘발성, RAM
-
보조기억장치 : 비휘발성
- 파일시스템용 : 전원이 나가도 유지해야 할 정보를 파일 형태로 보조기억장치에 저장
- 스왑 영역(swap area)용 : 메모리 용량의 한계로 메모리 연장공간으로 사용하는 것
8. 저장장치의 계층 구조
9. 하드웨어의 보안
Mode bit
사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 하드웨어적 보호장치
- 1 사용자 모드 : 사용자 프로그램 수행
- 0 커널 모드(=모니터모드, 시스템모드) : os코드 수행
모든 입출력 명령은 특권명령으로 규정해서 사용자 프로그램이 직접 입출력을 하는 것을 차단한다
10. 메모리 보안
하나의 사용자 프로그램이 메모리 주소 참조 연산을 잘못 사용해 다른 사용자 프로그램의 메모리 영역이나 운영체제 커널이 위치한 영억을 참조하려는 시도를 할 수 있다.
이러한 상황을 방지하기 위해 2개의 레지스터(기준레지스터, 한계레지스터)를 이용한다.
사용자 프로그램은 기준 레지스터 ~ 기준 레지스터 + 한계 레지스터 값 사이의 주소 영역에만 접근할 수 있다.
⛔ 접근하려는 주소가 위 범위를 벗어나면 예외상황 인터럽트를 발생시킨다.
-
메모리 접근 연산은 특권명령이 아니다.
-
기준 레지스터와 한계 레지스터의 값을 세팅하는 연산은 특권명령이다.
11. cpu 보호
타이머(timer) : cpu가 하나의 프로그램에 의해 독점되는 것을 막기 위해 운영체제가 사용하는 하드웨어
타이머는 시분할 시스템에서 현재 시간을 계산하기 위해서도 사용된다.
댓글남기기