
운영체제를 배우고 있어서 배운 내용을 정리해두려고 한다.
아직은 초기 부분이라서 장황하게 느껴질 수도 있다!
개념들이 어떤 것이 있는지, 무엇을 배울지 알아보자.
📌 컴퓨터의 프로그램이란?
📌 운영체제의 정의
📌 운영체제의 주요 구성 요소
📌 가상화
📌 영속성
중앙처리장치인 CPU
Main Memory, 주기억장치
Secondary Storage , 보조기억장치
I/O Device : 입출력 장치
주기억장치로 활용되는 RAM에 대해서 [관련 포스팅]
RAM과 ROM
- RAM (Random Access Memory) : 휘발성의 주 기억장치로 쓰이는 메모리 (나름 종류가 어러가지)
- ROM (Read Only Memory) : 비휘발성의 BIOS 코드를 저장하는 메모리, 시스템 레벨의 프로그램을 저장한다. 메인보드에 조그만 용량으로 부착되어있다.
그러면 ROM에 OS가 담긴 것인지?
instruction들의 Seqence : 컴퓨터와 데이터들의 의해 실행되는 것
프로그램 파일은 실행 파일(exectable file) 형태로 보조저장장치에 install된다.
instruction은 기계언어로, 기계에 의해 해석되고 실행할 수 있다. 또한 운영체제가 관리하는 최소 단위이다.프로세스의 하드웨어 상태?
프로그램을 준비하고 실행하는 것은 OS, 운영체제가 담당한다. 프로그램이 실행되기 위해서는 메모리로 적재해야한다.
load한다. → 운영체제는 CPU에게 프로세스를 넘기고 프로그램을실행한다.
프로그램은 보조기억장치에 있고, 필요할 때마다 주기억장치에 적재한다.
프로그램에서 필요한 부분만 적재하고 적재를 미룬다. 자원은 한정적이고 실행할 프로그램은 많기 때문에 모든 것을 가져오지 않고, 빈번히 실행되는 것을 메인메모리에 적재한다.
→ 이런 적재의 규칙 또한 OS의 역할이다.
An operating system is software that manages the computer hardware, as well as providing an environment for application programs to run
운영체제는 컴퓨터 하드웨어를 관리하고 응용프로그램이 실행될 수 있는 환경을 제공하는 소프트웨어이다.
어떤 환경을 제공하는가? → 프로그램이 잘 동작할 수 있도록, 한정적인 자원임에도 충분한 자원이 있는 것처럼 운영을 해야한다.
운영체제는 효율적인 자원관리와 오류가 나지 않도록 정확한 제어를 담당한다.
OS is a resource allocator : OS는 자원을 할당한다.
프로그램들은 한정적인 자원; CPU, Memory, Disk을 가지고 경쟁한다.
→ 어떻게 걍쟁 상태를 해소할 것인지, 누구를 선택할 것인지 어떻게 운영할 것인지를 결정
– Many programs to run → Sharing the CPU
– Many programs to concurrently access their own instructions and data → Sharing memory– Many programs to access devices → Sharing disks
OS는 프로그램을 컨트롤한다.
문제없이 프로그램이 동작할 수 있도록 제어한다.
프로그램을 실행하기 쉽게, 자원을 공유할 수 있도록, 프로그램이 장치와 상호작용하는 것을 관리한다.
키보드에서 입력을 두개 받아서 더한후에 출력을 한다.
I/O장치는 CPU보다 훨씬느리다.
폴링 방식은, 반복적으로 장치의 상태 레지스터를 읽어서 수신 가능 여부를 계속해서 확인한다. 이 과정동안 자른 프로세스에게 CPU를 양도하지 않고, 대기 하고 있다. → CPU의 낭비가 발생한다.
→ 인터럽트를 활용해서 CPU 연산과 I/O 작업을 중첩 시키는 것이다.
인터럽트란?
장치가 작업을 끝마치면 하드웨어 인터럽트를 발생시키고 CPU는 운영체제가 미리 정의해놓은 인터럽트 서비스 루틴 (ISR)/인터럽트 핸들러(운영체제 코드의 일부)를 실행힌다.
인터럽트 벡터는 인터럽트가 발생했을 때, 그 인터럽트를 처리할 수 있는 서비스 루틴들의 주소를 가지고 있는 공간이다.
인터럽트 서비스 루틴(ISR)은 인터럽트 요청에 의해 발생되는 인터럽트에 따라 기능을 처리하는 기계어 코드 루틴

트랩 : 시스템 콜이 이용하는 하드웨어 명령어
사용자(응용프로그램)이 프로그램실행, 메모리나 장치에 접근할 때 사용한다. like 표준라이브러리)
시스템 콜을 실행하기 위해 프로그램은 trap이라는 특수 명령어를 실행한다.
트랩 명령어는 커널 안으로 분기하면서 커널 모드로 상향조절한다.
trap(트랩) : 사용자 모드에서 커널 모드로 진입하는 명령어
return-from-trap : 사용자 모드로 돌아가는 명령어
중요한 것은 OS가 가상화를 어떻게 시키느냐에 대한 내용