KOCW.이화여자대학교.반효경.운영체제
위 강의를 바탕으로 학습 및 정리했습니다
협의의 운영체제 (커널)
광의의 운영체제
자원을 효율적으로 관리하는 역할을 함
일괄 처리 (batch processing)
시분할 (time sharing)
실시간 (Realtime OS)
Multitasking : 프로그램 여러개 실행시키는 거
Multiprogramming
Time sharing
Multiprocess
구분
Multiprocessor
컴퓨터 전원을 켜게되면 운영체제가 메모리에 상주하면서 실행이 됨
프로그램을 실행시키면 해당 프로그램이 메모리에 올라가서 프로세스가 됨
Device Controller : I/O 장치를 전담하는 작은 CPU
Local buffer : Device Controller의 작업공간 (작은 메모리 같은)
CPU의 작업공간 메모리 (메모리도 메모리를 전담하는 Controller가 따로 있음)
CPU 권한이 프로세스에 넘어가면 운영체제가 CPU를 제어할 방법이 없음
-> 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보호장치가 필요하다
-> Mode bit으로 위험한 기능은 실행하지 못하도록 하고 CPU권한이 운영체제로 넘어오도록 함 (즉, 사용자 프로그램은 제한된 기능만 수행할 수 있도록 제어하고 CPU권한이 한 프로그램에 머물지 못하도록 함)
Mode bit
1 : 사용자 모드 / 사용자 프로그램 수행
2 : 모니터 모드 / OS 코드 수행
CPU 권한을 자동적으로 운영체제로 넘어가게하는 방법 2가지 Interrupt, Exception
Exception : 예외상황이 발생하면 (위험한 기능을 실행하려하면)
Interrupt
CPU가 매 순간 메모리에서 기계어를 읽어서 실행한 다음
다음 기계어를 실행하기 전에 Interrupt Line에 Interrupt 들어온게 있는지 체크
Interrupt가 들어 왔으면 자동적으로 운영체제로 CPU 권한이 넘어감
그 Interrupt에 대응하는 일 수행
registers : CPU가 수행하는 연산의 Input/Output을 저장하기 위한 아주 빠르고 작은 메모리같은 역할 (메모리는 아님) / 여러가지 레지스터가 있음
CPU의 독점을 막기 위해선 운영체제 혼자서 CPU 권한을 뺏을 수 없음
-> 따라서 추가적인 하드웨어가 필요함
타이머 (Timer)
CPU는 Program counter 라는 레지스터에서 다음에 실행되어야할 프로그램의 메모리주소를 가지고 기계어를 실행, 이런식으로 자동적으로 (원칙적으론) 다음 프로그램의 위치를 읽어오면서 기계어 실행
-> 하지만 프로그램이란 것이 항상 동일한 수행순서를 가지고 실행되진 않음
== 어떤 조건을 만족하느냐 하지 않느냐에 따라서 수행순서가 바뀔 수 있음
사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것
예시
Device controller는 하드웨어임 (CPU도 하드웨어 -> 운영체제에 의해 동작 )
Device driver
인터럽트가 너무 자주 걸리면 CPU가 너무 비효율적이게 됨 -> 메모리를 접근할 수 있는 장치를 하나 더 둠 (DMA)
DMA가 직접 I/O 작업 결과를 메모리에 올려주는 작업까지하고 인터럽트를 검
즉, CPU의 중재 없이 controller가 device의 buffer storage의 내용을 메모리에 (byte단위가 아닌)block 단위로 직접 전송
프로그램 실행 단계
사실 중간에 한단계가 더 있음
프로그램이 실행될 때는 그 프로그램의 독자적인 주소 공간(자기만의 주소공간은 0번지 부터 존재)이 만들어짐 == Virtual Memory
-> 당장 필요한 부분(1)은 물리적인 메모리에 올라감
그렇지 않은 부분(2)은 디스크의 Swap Area에 내려가게 됨
(2) 중의 일부(code 등) 파일 시스템에 실행파일 형태로 존재
각 프로세스들만의 주소(논리적 주소) / 물리적인 메모리 주소(물리적 주소)는 다른 주소임
-> 주소변환(Address Translation)이 필요
프로세스 각각의 Address space에는 크게 몇가지 구성요소가 있음
== 코드 / 데이터 / 스택
운영체제 커널도 하나의 프로그램임 -> 함수구조로 되어있음 -> 커널의 주소공간도 코드/데이터/스택으로 이루어져 있음
운영체제는 시스템의 프로세스를 다 관리해야 함
-> 모든 하드웨어들을 관리하기 위한 자료구조와 모든 프로세스들을 관리하기 위한 자료 구조를 가지고 있음
== PCB (Process Control Block)
운영체제의 스택은 각 프로세스 별로 스택을 두고 있음
사용자 정의 함수
라이브러리 함수
실행하면 프로세스의 Address space에
(mode bit == 0 : cuner mode / mode bit == 1 : user mode)