생각기록
운영체제 강의 1차 (운영체제란, 목적, 분류) 본문
선수과목
c 프로그래밍과 자료구조를 알아야 수업 이해에 도움이 된다.
본 강의는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각 요소 및 그 알고리즘의 핵심적인 부분에 대해 기초부터 학습한다.
나라의 대통령이 국가를 위한 재원 분배같은것을 하는데, 운영체제도 마찬가지다
이 위에서 돌아가는 프로그램들을 어찌 관리하는지 통치자라고 생각하면 된다.
이화여자대학교 :: CORE Campus (ewha.ac.kr)
운영체제는? Operating System
컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층
| 협의의 운영체제 (좁은 의미) | 광의의 운영체제 (넓은 의미) |
| = 커널 운영체제의 핵심으로 메모리에 상주하는 부분 |
커널 뿐 아니라 각종 주변 시스템을 다루는 유틸리티를 포함한 개념 |
ㅡ> 하드웨어 위에 운영체제를 설치하면, 하나의 컴퓨터 시스템이 됨
ㅡ> 사용자는 직접 컴퓨터 하드웨어에 접근 x, 컴퓨터 사용 가능
ㅡ> 운영체제를 제외한 각종 소프트웨어도 하드웨어에 직접 접근 x 운영체제의 관리 받으며 실행되도록 함
강의 내용
운영체제란?
운영체제의 목표
운영체제의 분류
운영체제의 구
- 개요
- 컴퓨터시스템의 구조
- 프로세스 관리
- cpu 스케줄링
- 병행 제어
- 데드락
- 메모리 관리
- 가상 메모리
- 파일 시스템
- 입출력 시스템
- 디스크 관리
운영체제란? ( operating System, os)
컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층

운영체제가 없으면, 컴퓨터는 사용이 불가
설치해두면, 두개가 한몸이 되서 하나의 시스템이 된다.
운영체제의 목표
1. 컴퓨터 시스템을 편리하게 사용할 수 있는 환경
✅ 운영체제는 동시 사용자 & 프로그램들이, 실제로 물리적 하드웨어는 하나이고 동시에 여러 사용자/프로그램이 실행되는 것이지만, 각자 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공 함
✅ 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행

컴퓨터는 한대기때문에 운영체제나 하드웨어를 적절히 관리해야함
2. 컴퓨터 시스템의 자원을 효율적으로 관리❗ (운영체제의 핵심기능)
✅ 프로세서(cpu), 기억장치(메모리), 입출력 장치(I/O) 등의 컴퓨터 시스템의 자원(resource)을 효율적 관리
=> 하드웨어 자원
- 사용자간 형평성 있는 자원 분배, 주어진 자원으로 최대한 성능을 내도록 함
- 사용자 및 운영체제 자신의 보호
- 프로세스, 파일, 메세지 등을 관리한다.
=> 소프트웨어 자원
효율성, 형평성
하드웨어 뿐만 아니라 소프트웨어 자원도 관리해야할 책임도 갖고 있다.

그래서 운영체제란 무엇인가 하면!
컴퓨터 시스템의 자원을 효율적으로 관리해주는 것이라고 말하면 된다. = 자원 관리자
자원이란?
시스템이나, 메모리, 입출력(하드디스크 같은 보조기억장치 등)을 자원(리소스) 이라고 부릅니다.
하드웨어 자원 소프트웨어 자원 컴퓨터나 컴퓨터에 붙어 있는 주변 장치들을 "하드웨어"
기계, 물건
컴퓨터의 신체소프트웨어는 "프로그램"
0과 1이라는 2진수로 되어 있기에, 즉 물질이 아닌 정보CPU, 기억장치(메모리), 입출력 장치 등 프로세스, 파일, 메세지 등
cpu 라는것은 컴퓨터에서 가장 빠른 자원 여러프로그램이 동시에 실행되려면, cpu를 번갈아가며 짧게 써야한다.
- 실행중인 프로그램들에게 짧은 시간씩 CPU를 번갈아 할당
- 실행중인 프로그램들에게 메모리 공간을 적절히 분배 하는 역할
- 한정된 CPU, 메모리를 최고의 효율로 관리하는 것이 운영체제의 최종 목표
- + 형평성 (평균적으로 전체적으로 좋아야함. 하나에 치우치지 않도록 => 그렇게 운영체제 설계 )
운영체제의 분류 기준
1. 동시 작업 가능 여부
✅ 단일 작업 Single Tasking
- 한 번에 하나의 작업 처리
- 한 명령의 수행을 끝내기 전에 다른 명령 수행 x
ex) 마이크로소프트 도스
✅ 다중 작업 Mult Tasking - 일반적
- 동시에 두 개 이상의 작업 처리
- 한 명령의 수행이 끝나기 전, 다른 명령이나 프로그램 수행
2. 사용자의 수
✅ 단일 사용자 Single User
- 한 대의 컴퓨터에 사용자 한명
✅ 다중 사용자 Mult User - 일반적
- 컴퓨터 한 대를 동시에 여러 사용자가 접속
- 계정을 여러 개 만들고, 계정을 통해 원격으로 동시 접속 가능
- 사용자가 많아져 보안 기능, 사용자간 형평성 기능 추가
3. 처리 방식
✅ 일괄 처리 Batch Processing (배치 프로세싱을 한다.)

- 작업이 들어올 때 바로바로 처리하는게 아니라 작업 요청의 일정량을 모아 한꺼번에 처리하는 방식
- 작업이 완전히 종료될 때까지 기다려야 함
ㅡ> interactive 하지 않다 ( = 결과가 바로바로 나오지 않음 )
✅ 시분할 Time Sharing - 일반적
- 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
- 일괄처리 시스템에 비해 짧은 응답 시간 가짐, but 그 응답 시간의 데드라인이 정해져 있는 것은 아님 => 데드라인 x
- 사람에 특화된 시스템, 일반적 범용 컴퓨터에 사용
ㅡ> interactive 한 방식 ( = 입력의 결과가 바로바로 나옴 )
✅ 실시간 RealTime OS
- 정해진 시간 안에 어떠한 일이 반드시 종료됨에 보장되어야 하는 실시간 시스템을 위한 OS
- => 데드라인 o
- 특수 목적을 가진 시스템 ex) 원자로 / 공장 제어, 미사일 제어, 반도체 장비, 로보트 제어 등에 사용
* 실시간 시스템 개념
Hard Realtime System (경성 실시간 시스템)
: 데드라인을 정확히 지키지 않으면, 치명적인 결과가 나오는 시스템
Soft Realtime System ( 연성 실시간 시스템 )
: 데드라인이 있지만, 그게 지켜지지 않아도 큰 문제가 없는 시스템
ex) 영화, 멀티미디어
몇 가지 용어
Multitasking (일반적 용어, CPU 하나의 프로그래밍이 끝나기전 다른것이 가능 )
Multiprogramming ( 또는 이렇게 부르지만, 메모리에 여러개가 동시에 올라가는 것 )
Time Sharing (시분할, CPU강조)
MultiProcess
구분
✅ 위의 용어들은 컴퓨터에서 여러 작업을 동시에 수행하는 것을 뜻함
✅ Multiprogramming 은 여러 프로그램이 메모리에 올라가 있음을 강조 (Multitasking 과 비교해)
✅ Time Sharing 은 CPU의 시간을 분할하여 나누어 쓴다는 의미 강조
이러한 기능을 지원해주는게 운영체제
💫 MultiProcessor
:하나의 컴퓨터에 CPU(프로세서)가 여러개 붙어 있음을 의미
멀티테스킹 지원이 당연히 되겟지만, CPU가 여러개인 하드웨어적으로 다름
운영체제의 예
| 유닉스 계열(UNIX) | MS 계열 (윈도우즈 계열) |
| 대형컴퓨터(서버)를 위해 만들어진 운영체제 ㅡ> 멀티태스킹, 다중사용자 지원에서 출발 |
개인용 컴퓨터를 위해 만들어진 운영체제 ㅡ> 단일 사용자, 단일 작업 지원에서 출발 |
| (커널코드)코드의 대부분 C언어 작성 | DOS ( Disk Operating System ) ms 사에서 1981년 IBM-PC를 위해 개발 단일 사용자용 운영체제, 메모리 관리 능력의 한계(주 기억 장치 : 640KB까지) => 하드웨어 발전으로 누더기 코드가 됨.. |
| 높은 이식성 ㅡ> 기계어와 독립적 언어인 C언어로 작성되어서, 전혀 다른 기계어의 컴퓨터에 이식하기 쉽다. | MS Windows ms사의 다중 작업용 GUI 기반 운영 체제 Plug and Play, 네트워크 환경 강화 Dos용 응용 프로그램과 호환성 제공 불안정성 풍부한 지원 소프트 웨어 |
| 최소한의 커널 구조 ㅡ> 메모리에 상주하는 핵심 부분인 커널을 작게 만들어서 메모리 사용량을 줄임 |
소스코드 공개 X, 운영체제 만들어서 결과물만 돈주고 팔았음 |
| 복잡한 시스템에 맞게 확장 용이 | Handheld device 를 위한 os PalmOS, Pocket PC.. |
| 소스 코드 공개 (확장성, 학술적 사용 가능) | |
| 프로그램 개발에 용이 | |
| 다양한 버전 : System V, FreeBSD, SunOS, Solaris (소스코드 비공개) | |
| 공개 소프트웨어 정신에 입각해 나온 유닉스 계열 운영체제인 Linux(리눅스) => 대형말고도 여러 환경에서 활용 가능/ 안드로이드도 리눅스 커널을 쓰고 있다. |
운영체제의 구조

자원관리자로서 운영체제는
❇️ 누구한테 CPU를 줄까? CPU 스케쥴링
❇️ 한정된 메모리를 어떻게 쪼개어 쓰지? 메모리 관리(할당)
❇️ 디스크에 파일을 어찌 보관? 파일 관리
(디스크 스케쥴링 필요 : 엘레베이터도 가까운 승객부터 태우듯 비슷 디스크 해드의 가까운 곳부터 처리)
❇️ 각기 다른 입출력장치와 컴퓨터 간에 어떻게 정보를 주고 받는지? 입출력 관리
(장치가 워낙 느림. 기본적으로 인터럽트로 관리)
❇️ 프로세스 관리
- 프로세스의 생성과 삭제
- 자원 할당 및 반환
- 프로세스 간 협력
❇️ 그 외
- 보호 시스템
- 네트워킹
- 명령어 해석기 ( Command lin interpreter )
os개발자 관점에서 수강해보세요.
대부분의 알고리즘은 os프로그램 자체의 내용
인간의 신체가 뇌의 통제를 받듯 컴퓨터 하드웨어는 운영체제의 통제를 받으며 그 운영체제는 사람이 프로그래밍 하는 것 이다.
System structure & Program Execution
운영체제 설명 앞서 하드웨어적 동작에 설명
컴퓨터 시스템 구조


컴퓨터시스템은 크게
- CPU + Memory = 컴퓨터(호스트)
- I/O 디바이스 들로 구성 (인풋 아웃풋하는 디바이스)
- 인풋이란 I/O device의 데이터가 컴퓨터 안으로 들어가는 것
- 아웃풋은 데이터를 받아서 처리해서 디바이스로 보내는 것

❇️ i/o 디바이스
- 키보드, 마우스는 인풋 디바이스 / 프린터나 모니터같은 것들은 처리 결과를 내보내는 아웃풋 디바이스
- 하드디스크 - 메모리를 읽어 들이는(인풋) / 처리 결과 파일에 저장(아웃풋)
- 디바이스를 전담하는 작은 CPU 가 붙어있다. => 디바이스 컨트롤러
- CPU의 메모리처럼 디바이스 컨트롤러도 그들의 작업공간이 필요 => local buffer
하드 disk는 보조 기억장치로 보통 이야기하지만,
i/o디바이스에서는 이 데이터를 읽어서 메모리로 읽기도 하고, 처리결과를 디스크에 저장하기도 하기떄문에
인풋 아웃풋 기능을 둘 다 하는 장치입니다.
❇️ 메모리 (memory)란?
- CPU의 작업 공간
- 매 클럭 사이클마다 기계어(인스트럭션) 읽어서 실행
인스트럭션(instruction)은
컴퓨터에게 일을 시키는 단위로서, 컴퓨터가 알아들을 수 있는 기계어로 이루어져 있는 명령이다.
지시 또는 명령이라고 한다.
CPU 구성

CPU는 기본적으로 매클럭마다 메모리에서 인스트럭션을 읽어서 실행하고, 그 다음 인스트럭션을 실행 함
인스트럭션을 실행하고 나면, 다음 주소를 읽기 전 interrupt line 체
❇️ registers
CPU안에는 메모리보다 더 빠르면서 정보를 저장할 수 있는 작은 공간 registers가 있다.
❇️ mode bit
CPU에서 지금 실행되는 것이 운영체제인지 사용자 프로그램인지를 구분
❇️ interrupt line
키보드입력이나 디스크에 뭘 읽어오라고 요청하거나 일을 다 끝냇다던지 그런걸 CPU에게 알리는
CPU 하나의 인스트럭션 실행 후 interrupt line 체크
없으면 다음 인스트럭션 실행 반복
있으면 운영체제에게 CPU 넘어감
- i/o 가 필요하다면, CPU는 i/o디바이스에 직접 접근 x => 디바이스 컨트롤러에 일을 시킴
- CPU가 하는게 아니라 i/o 가 필요하다면, 해당 디바이스 컨트롤러에게 일을 시킴
- 메모리에 접근하는 인스트럭션만 읽는다
Q. 무한루프가 도는 프로그램이면?
i/o도 안하고 CPU만 쓰게 되면, 다른프로그램한테 넘어가지 못함ㅡ 분할 구현 x
사용자 프로그램 <ㅡ 운영체제는 CPU 권한 뺏기 힘듬. 운영체제가 뺏기 힘들어서 추가적으로 생긴 하드웨어 장치
그래서 timer라는 하드웨어가 있다.
❇️ timer
특정 프로그램이 CPU독점을 막기위한 것
타임 쉐어링을 위한 것
CPU의 소유 순서 룰
- 컴퓨터를 켰을때 처음에는 운영체제가 CPU를 가지고 있음
- 여러 사용자 프로그램이 실행되면 CPU를 넘기는데, 넘기면서 timer에 값을 세팅해서 넘김
- 그럼 사용자 프로그램은 계속 CPU를 쓸 수 있는게 아니라 할당된 수십밀리세컨드 정도의 시간을 셋팅해서 넘김
- 실행하다가 셋팅 시간이 되면, timer가 CPU에게 interrupt를 건다 ( 제한 시간 끝났다고 cpu에게 알림 )
- CPU는 매번 인스트럭션을 실행하다 끝나면 interrupt line을 체크함
- 들어온게 없으면 다음 인스트럭션을 실행
- 만약 timer가 interrupt 걸어왔으면, cpu는 하던일을 잠시 멈추고 cpu의 제어권을 사용자 프로그램 ㅡ> 운영체제로 자동으로 넘어간다.
- 운영체제로 CPU가 넘어가면 다음 프로그램에게 다시 CPU를 넘김(넘길때 timer 값 셋팅) ㅡ> timer 시간만료 ㅡ> 운영체제로 제어권 반복
- 운영체제가 관리하면서 timer의 도움을 받아 실행
- 프로그램 종료해도 CPU 자동 반납
- i/o를 해야하면, 실행 프로그램이 자진해서 운영체제에게 i/o 해달라고 cpu를 넘긴다. ㅡ> 사용자 프로그램은 직접 i/o 장치에 접근할수 없기때문
- i/o에 접근할수있는 인스트럭션은 운영체제(os)를 통해서만 가능합니다. ㅡ> 보안 등의 이유로 막아둔것
- 부탁받은 운영체제는 i/o컨트롤러에게 일을 시킴 ㅡ> 일이 오래걸리니 CPU는 다른 프로그램에게 CPU넘김
- 키보드의 입력이 값이 자신의 local buffer에 들어왔다면, 키보드 컨트롤러가 CPU에게 interrupt를 건다
- 어떤 것이 실행됫겟지만, interrupt가 들어오면 자동적으로 os에게 CPU가 넘어감
- 입력된 키보드 값을 아까 키보드 입력 요청한 프로그램의 메모리 공간에 카피를 해주고, 실행되고있던 프로그램이 끝나고 언젠가는 요청햇던 프로그램에 돌아와서 cpu를 얻는다.
CPU 인스트럭션 실행 후 interrupt line 체크 반복
mode bit / 모드 빗
사용자가 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보호 장치 필요
보안상 이유로 사용자 프로그램은 나쁜짓을 할 수있어서 못하게 하기 위해 막은 것
Mode bit 을 통해 하드웨어적으로 두 가지 모드의 operation 지원
1 사용자 모드 : 사용자 프로그램 수행
interrupt나 예외 발생시 하드웨어가 mode bit 을 0 으로 바꿈
0 모니터 모드 * : OS 코드 수행
모니터 모드 (= 커널 모드, 시스템 모드)
사용자 프로그램에게 CPU를 넘기기 전에 mode bit 을 1로 셋팅
| 모니터 모드(모드빗 0 ) | 사용자 모드 (모드빗 1) |
| 즉 모니터 모드는 모든 가능, i/o 디바이스 접근 가능 | 제한된 인스트럭션만 실행 가능 ( 보안상 이유 ) |
| interrupt나 Exception 발생시 하드웨어가 mode bit 을 0 으로 바꿈 |
사용자 프로그램에게 CPU를 넘기기 전에 mode bit 을 1로 셋팅 |
✅ 보안을 해칠 수 있는 중요한 명령어는 모니터 모드(모드빗 0 )에서만 수행 가능한 '특권명령'으로 규정
=> 즉 모니터 모드는 모든 가능, i/o 디바이스 접근 가능

Timer
특정 프로그램의 cpu 독점을 막기위한 것
✅ 정해진 시간이 흐른 뒤 운영체제에게 제어권이 넘어가도록 인터럽트를 발생시킴
✅ 타이머는 매 클럭 틱 때마다 1씩 감소
✅ 타이머 값이 0이 되면, 타이머 인터럽트 발생
✅ CPU를 특정 프로그램이 독점하는 것으로부터 보호
타이머는 time sharing을 구현하기 위해 널리 이용됨
타이머는 현재 시간을 계산하기 위해서도 사용
Device Controller
i/o device controller
✅ 해당 i/o 장치유형을 관리하는 일종의 작은 CPU
✅ 제어 정보를 위해 Control register, status register를 가짐
✅ local buffer를 가짐 ( 일종의 data register ) => 실제 데이터를 담음
제어 정보를 위한 레지스터란?
CPU가 해당 I/O 컨트롤러에게 명령할 때 지시하기위한 register
만약 메모리의 파일을 데이터에 저장하고 싶다?
그 데이터를 로컬 버퍼에 넣고, 파일을 저장하라는 명령을 제어 레지스터를 통해 cpu가 i/o 컨트롤러 한테 전달
✅ i/o는 실제 기기와 local buffer 사이에서 일어남
✅ device controller 는 i/o가 끝났을 경우 interrupt로 CPU 에 그 사실을 알림
CPU는 사실 메모리 접근도 할 수 있고 로컬 버퍼 접근도 가능
작은 CPU들은 자신의 로컬 버퍼만 접근
CPU가 너무 많이 interrupt를 당해서 빠른장치가 그다지 효율적이지 않다. 그래서 DMA Controller가 있다.
DMA Controller
직접 메모리에 접근할 수 있는 컨트롤러
- cpu는 자기일을 하고, 로컬 버퍼 작업이 끝나면 DMA controller가 로컬 버퍼에 있는 것을 메모리로 복사 해줌
- 이 작업이 다 끝나면, CPU한테 Interrupt에 한번만 걸어서 일처리 보고 한다. (cpu의 빈도가 줄어듬
🔹 device driver (장치 구동기)
: OS 코드 중 각 장치별 처리 루틴 ㅡ> Software
소프트웨어 / 각 디바이스 인터페이스에 맞게 접근을 함
우리가 하드웨어를 하나 설치하면, 접근하기 위한 디바이스 드라이버를 설치해야한다.
🔹 device controller(장치제어기)
: 각 장치를 통제하는 일종의 작은 CPU ㅡ> hardware
cpu의 숙명은 본인이 이번에 실행해야할 인스트럭션의 메모리 주소를 register중에서도 프로그램 카운터..
i/o장치에 접근해야하는 경우 디바이스 드라이버를 통해서 명령을 함
메뉴얼대로 일함/ 메모리 몇번지 일을 해라 / 인스트럭션 실행 후 다음메뉴얼을 실행 ..반복 / 전체적 통제는 운영체제가 한다.
인터럽트 ( Interrupt )

✅ 인터럽트 당한 시점의 레지스터와 program counter를 save 한 후 CPU의 제어를 인터럽트 처리 루틴에 넘긴다.
일반적인 의미로 하드웨어나 i/o 컨트롤러가 걸어주는 인터럽트
현대의 운영체제는 인터럽트에 의해 구동됨
Interrupt ( 넓은 의미 )
✅ interrupt ( 하드웨어 인터럽트 ) : 하드웨어가 발생시킨 인터럽트
보통은 하드웨어 인터럽트
요청 작업이 끝났을 때
✅ Trap ( 소프트웨어 인터럽트 ) :
- Exception : 프로그램이 오류를 범한 경우
- System call : 프로그램이 커널 함수를 호출하는 경우
인터럽트 관련 용어
✅ 인터럽트 벡터
해당 인터럽트의 처리 루틴 주소를 가지고 있음 = 해야 할 일 주소
(키보드, 타이머 각각의 종류마다 운영체제가 하는 일이 다릅니다.)
✅ 인터럽트 처리 루틴
( = interrupt Service Routine, 인터럽트 핸들러 )
해당 입터럽트를 처리하는 커널 함수 / 실제 해야 할 일
입출력 (I/O)의 수행
모든 입출력 명령은 특권 명령
사용자 프로그램은 어떻게 I/O를 하는가? (직접 안됨! )
✅ 시스템 콜 (System call)
사용자 프로그램은 운영체제에게 I/O 요청 = 소프트웨어 인터럽트
사용자 프로그램이 운영체제의 함수, 커널을 호출 하는 것을 시스템 콜
소프트웨어적으로 프로그램이 인터럽트 라인 셋팅(시스템 콜 = 소프트웨어 인터럽트) ㅡ> 모드빗 0 (운영체제) ㅡ>
올바른 요청인지 확인 ㅡ> i/o 장치 컨트롤러에게 부탁 ㅡ> i/o가 끝났을때 하드웨어 인터럽트
✅ 시스템콜 (사용자 프로그램이 os에게 i/o 요청)
✅ Trap 을 사용하여 인터럽트 벡터의 특정 위치로 이동
✅ 제어권이 인터럽트 벡터가 가르키는 인터럽트 서비스 루틴으로 이동
✅ 올바른 I/O 요청인지 확인 후 I/O 수행
✅ I/O 완료 시 제어권을 시스템콜 다음 명령으로 옮김 * 시킨일이 다 끝낫을시 (하드웨어 인터럽트가 걸림 )
정리 : i/o를 하기위해 인터럽트 두가지 종류가 걸린다 ( 둘다 필요 )
처음에는 사용자 프로그램이 요청하기 위해 os에게 시스템 콜 ( 요청하기위한 소프트웨어 인터럽트 )
os가 io하라고 컨트롤레에게 시키고 시킨일이 (i/o)다 끝나면, 하드웨어 인터럽트가 걸린다.
다했다고 cpu에게 알림
1. timer 인터럽트 (cpu의 독점 막기)

2. 요청한 i/o 가 다 끝났음을 알리는 또는 입력이들어왓다는 것을 알리기위한 컨트롤러

💥현대의 운영체제는 인터럽트에 의해 구동된다.
운영체제는 cpu를 사용할 일이 없다..
인터럽트가 들어올때만 cpu가 운영체제에게 넘어가는 것
System call
시스템 콜 (System call)
사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것

사용자 프로그램이 interrupt line 셋팅 ㅡ> cpu 운영체제로 ㅡ> 부탁한일을 운영체제가 할 수있다.
CPU에게 뭔가 알리고 싶을 때
인터럽트를 걸어서, cpu는 매순간 메모리 속 인스트럭션을 실행
( 메모리 어디 있는? cpu안에 Register중에서도 메모리 주소를 가르키는 프로그램 카운터 레지스터가 가르키는 메모리 익스트럭션을 읽음) 후 메모리 카운터는 다음 주소 가르킴
특별한 일이 없으면 다음 인스트럭션을 실행, 순차적이아닌 점프하는 인스트럭션을 만나면 ..
다음 인스트럭션을 실행하기 전에 하는 일이 있다. 인터럽트 라인을 확인(인터럽트가 들어왔는지)
들어와있으면, 하던작업을 멈추고 cpu 제어권을 운영체제에게 넘김
운영체제는 왜 인터럽트가 걸렷는지 운영체제 커널안에 있는 함수로 정의되어있다.
'스터디 > 운영체제' 카테고리의 다른 글
| 운영체제 2차 (동기식, 비동기식 입출력 / 저장장치 계층 구조 / 프로그램의 실행 ) (0) | 2023.04.30 |
|---|