OS ( Operating System )
작성시작: 2021-11-28(일)
OS란?
우리들이 평소에 사용하는 노트북, 스마트폰, 스마트TV와 같은 전자기기에는 반드시 운영체제 가 내장되어있습니다. 모바일 기기에는 Android
, IOS
등이 대표적이고 컴퓨터에는 MacOS
, Window
, Linux
등이 있습니다.
운영체제는 하나의 소프트웨어로서 컴퓨터의 부품들인 Hardware
들의 입/출력 동작을 제어하고 사용자에게 편의성을 주는 다양한 소프트웨어를 설치할 수 있는 환경을 제공합니다.
우리가 마트에서 구매할 수 있는 계산기는 제작될 때 탑제되어있는 수식계산의 기능외에는 할 수 있는것이 없습니다. 만약 기능을 추가하고싶다면 하드웨어를 뜯어서 다시 만들어야합니다. 하지만 컴퓨터에 새로운 기능을 추가하고 싶다면 운영체제를 업데이트하기만 하면 됩니다. 이처럼 운영체제는 다시 만들지 않고 업데이트만으로 기능을 추가할 수 있도록 해줍니다.
OS의 기능
운영체제는 위에서 동작하는 응용프로그램과 사용자에게 모든 자원의 실제위치를 숨기고 OS
가 제공하는 Interface
를 통해서만 접근할 수 있도록 합니다.
이 기능덕분에 응용프로그램을 개발할 때 컴퓨터에 데이터가 어느 보조기억장치로 저장되는지 여부까지는 신경 쓸 필요가 없습니다. 컴퓨터의 메모리 위치관리를 OS
가 직접 진행하기 때문에 OS
에게 파일저장을 요청하기만 하면 됩니다.
OS의 구조
OS
는 컴퓨터 Hardware
를 관리하고 제어하는 기능과 나머지 핵심기능을 모아둔Kernel
과 이러한 Kernel
에게 명령을 내리고 Kernel
의 명령결과를 다시 응용프로그램에게 돌려주는 Interface
로 구성되어있습니다.
컴퓨터의 구성과 OS의 역할
폰 노이만 구조
모든 프로그램은 메모리에 올라와야만 실행할 수 있다.
오늘날의 대부분의 컴퓨터는 위와 같은 폰 노이만 구조
를 따라 설계되었습니다.
컴퓨터는 작업을 실제로 연산하고 처리하는 주체인CPU
, 해당 작업을 처리할 때 보관하는 Memory
, 자원을 저장하는 Storage
로 나뉩니다.
Memory
의 용량이 크면 처리할 수 있는 작업의 양이 늘어나기 때문에 속도가 향상되고, CPU
의 성능이 좋다면 연산속도가 증가하여 전체적인 컴퓨터 속도도 향상될 것입니다. Storage
의 크기가 크다면 당연하게도 저장할 수 있는 데이터의 양이 증가하게 됩니다.
CPU의 구성과 기능
CPU
는 실제 연산이 이루어지는 연산장치(Artihmetic and Logic Unit)
와 연산과 작업을 명령하는 제어장치(Control Unit)
, 그리고 CPU
에서 사용하는 데이터를 임시로 보관하는 장치인 레지스터(Register)
가 있습니다.
#include <stdio.h>
int main(){
int a = 5;
int b = 10;
int result = a + b;
}
예를 들어 설명하고자 작성한 간단한 C언어 코드입니다. 저 코드에서 A + B
부분이 CPU
에서 연산되는 과정을 살펴보면 먼저 CPU
는 연산하고자 하는 데이터를 Memory
에서 CPU
의 Register
로 이동시키게 됩니다. 이때 Register
로 이동하는 명령은 CPU
의 제어장치
가 담당하게 됩니다. Register
로 이동한 데이터 5와 10
은 ALU
로 이동하게 되고 ALU
에서 5 + 10
의 연산을 수행하게 됩니다. 결과값은 다시 Register
로 저장되고 위 코드에서 Result
변수에 저장되는 순간 15
라는 데이터는 Register
에서 다시 Memory
로 이동하면서 CPU
의 작업이 마무리됩니다.
레지스터의 종류
레지스터는 사용자와 프로그램에 의해 변경되는지 여부에 따라 사용자 가시 레지스터
와 사용자 불가시 레지스터
로 나뉩니다.
레지스터 | 역할 | |
---|---|---|
사용자 가시 레지스터 | DR(Data Register) | CPU가 처리하는 필요한 데이터를 임시로 저장합니다. |
AR(Address Register) | 데이터 혹은 명령어가 저장된 메모리의 주소를 저장합니다. | |
사용자 불가시 레지스터 | PC(Program Counter) | 다음에 실행해야하는 명령의 위치를 저장하는 레지스터 |
IR(Instruction Register) | 실행중인 명령을 저장하는 레지스터 | |
MAR(Memory Address Register) | 접근해야할 메모리의 주소를 저장하는 레지스터 | |
MBR(Memory Buffer Register) | 메모리에서 가져온 데이터를 임시로 저장하는 레지스터 | |
PSR(Program State Register) | 연산결과(음수, 양수)등을 저장하는 레지터스 |
BUS
Bus
는 컴퓨터의 주변장치인 CPU
,Memory
,Storage
가 서로 데이터를 주고받을 때 사용됩니다.
Control Bus
는CPU
와Memory
사이에서 제어신호를 주고받을 때 사용됩니다.Address Bus
는CPU
가Memory
가 사용할 데이터의 주소정보를 넘길 때 사용되며 단방향으로만 전달됩니다.Data Bus
는CPU
와Memory
사이에서 실제 데이터를 주고받을 때 사용됩니다.
Interrupt
CPU
는 코어가 하나라면 한번에 하나의 작업만 처리할 수 있습니다. 이를 해결하기 위해서 여러가지 작업을 시간별로 쪼개서 여러번 처리하는 시분할 기법
이 도입되었는데 I/O System
작업에 대한 처리를 할 때는 문제점이 발생합니다.
만약 프린터에게 출력을 요청하였다면 프린터는 출력을 시작할 것입니다. 하지만 이 작업은 실제로 종이가 출력될 때 까지 시간이 걸리므로 작업이 끝날 때 까지 CPU
는 다른 작업을 처리할 수 없게됩니다.
이를 해결하기 위해 Interrupt
라는 개념이 도입되었습니다. CPU
는 I/O System
인 프린터에게 출력을 요청하고 다른 작업을 진행합니다. 프린터는 출력이 완료되면 CPU
에게 출력이 완료되었음을 알리는 Interrupt
를 전송합니다. 신호를 받은 CPU
는 하던 작업을 중지하고 출력작업을 마무리하게됩니다.
'Computer Science > OS' 카테고리의 다른 글
OS 공부하는 Jerry :: Memory (0) | 2021.12.25 |
---|
댓글