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 |
|---|
댓글