[OS] 운영체제 구조와 원리
운영체제란 ? #
컴퓨터 하드웨어(입출력장치 ,CPU)의 리소스를 관리해주면서 동시에
여러 애플리케이션이 작동할 수있는 환경을 제공해주는 소프트웨어다.
- OS는 프로그램들이 리소스를 필요로 할 때 필요 리소스를 할당해준다.
- OS는 각각 자원을 할당받은 프로그램이 서로 엉키지 않고 효율적으로 작동하도록 제어해준다.
- 운영체제가 하는일
- 프로세스 관리
- 메모리 관리
- 저장소 관리
- 보안
운영체제의 부팅과정 #
컴퓨터의 전원이 나가면 CPU는 ROM에 저장되어 있는 내용을 읽는다. ROM은 컴퓨터에 전원이 나가도 사라지지않는 비휘발성 메모리이며, 계쏙 보관되어야할 정보들을 저장한다. ROM안에는 POST와 부트로더가 저장되어 있다.
POST는 컴퓨터 전원이 켜지면 가장 먼저 실행되는 프로그램으로 컴퓨터에 이상이 있는지 체크하는 프로그램이다. 부트로더는 하드디스크에 저장되어 있는 OS 프로그램을 가져와 RAM에 넘겨준다.
부트로더 #
운영체제가 시동되기 이전에 미리 실행되면서
커널이 올바르게 시동되기 위해 필요한 모든 관련 작업을 마무리하고 최종적으로 운영 체제를 시동시키기 위한 목적을 가진 프로그램을 말한다.
Interrupt #
컴퓨터가 부팅이 되면 OS 프로그램을 실행한 후 사용자의 입력 이벤트를 기다린다. 이 이벤트를 인터럽트라고 한다. 인터럽트가 발생되면 OS는 해당 명령어 주소를 기억한다. 그 후 인터럽트가 끝나면 해당 주소로 돌아가 다음 명령어를 수행하거나 대기상태로 돌아간다.
Interrupt #
인터럽트는 말그대로
방해의 의미를 가지고 있으며 CPU가 프로그램을 실행하고 있을 때 입출력 하드웨어 등의 장치에 예외상황 (에러,입력등) 다양한 상황에서 CPU가 처리할 수 있도록 중간에 멈추게 한다.
인터럽트가 발생하면 CPU가 수행중이던 작업은 따로 저장하게 되고(CPU 내부 레지스터나메인메모리등), 인터럽트가 발생한 작업을 먼저 수행하게된다.
운영체제의 구조 #
- 운영체제는 DOS 시절부터 꾸준히 발전해왔다.
- 기본적으로 하나의 CPU는 하나의 작업만 처리할 수 있다.
- 따라서 예전에는 하나의 작업이 끝날 때 까지 다른 작업은 대기만 하고 있어서 효율이 낮았다.
멀티 프로그래밍 #
이러한 문제를 해결하기 위해 생긴 방법론이다. 멀티 프로그래밍의 기본 개념은 입출력을 수행하고 있는 경우, 다른 작업에 CPU를 할당해서 처리하도록 한다. 반대로 CPU가 작업을 하고 있는 경우. 입출력 장치들은 대기 상태로 만들어서 입출력이 필요한 작업에게 입출력 리소스를 할당한다.
멀티 태스킹 #
기술이 발전함녀서 프로세서의 처리 속도가 더욱 빨라졌는데 역설적으로 C프로세서의 낭비가 더욱 커졌다. 그 이유는 프로세서의 처리 속도의 발전 속도를 입출력 장치가 따라가지 못해서 프로세서의 낭비가 더욱 커지게 된다.
이러한 문제를 해결하기 위해 나온 개념이 멀티 태스킹이다. 멀티 태스킹은 각각에 작업들에게 자원 할당 시간을 정해줘서 그 시간이 지나면 다른 작업들에게 자원을 넘겨준다. 이때. 각 자원들에게 시간을 할당하는 것이 스케줄링이고 Job스케줄링과 cpu스케줄링이 있다.
운영체제 원리 #
운영체제는
interrupt-driven방식으로 사용자에게 요청이 발생하면 운영체제는 적절하게 자원을 분배하여 그 요청을 처리하는 구조이다.interrupt는 크게 두가지로 나뉜다
H/W interrupt와S/W interrupt가 있다.H/W interrupt: I/O , 메모리 , CPU와 관련된 interrupt이고S/W interrupt는 프로그램이 실행되다가 발생될 수 있는 Errors, 운영체제 Service들에 대한 요청인 System Call이 있다.