본문 바로가기
Computer Science/OS

OS 공부하는 Jerry :: 컴퓨터 구조

by jerry_kang 2021. 12. 1.

 

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에서 CPURegister로 이동시키게 됩니다. 이때 Register 로 이동하는 명령은 CPU제어장치가 담당하게 됩니다. Register 로 이동한 데이터 5와 10ALU로 이동하게 되고 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 BusCPUMemory 사이에서 제어신호를 주고받을 때 사용됩니다.
  • Address BusCPUMemory가 사용할 데이터의 주소정보를 넘길 때 사용되며 단방향으로만 전달됩니다.
  • Data BusCPUMemory 사이에서 실제 데이터를 주고받을 때 사용됩니다.

Interrupt

CPU는 코어가 하나라면 한번에 하나의 작업만 처리할 수 있습니다. 이를 해결하기 위해서 여러가지 작업을 시간별로 쪼개서 여러번 처리하는 시분할 기법이 도입되었는데 I/O System 작업에 대한 처리를 할 때는 문제점이 발생합니다.

만약 프린터에게 출력을 요청하였다면 프린터는 출력을 시작할 것입니다. 하지만 이 작업은 실제로 종이가 출력될 때 까지 시간이 걸리므로 작업이 끝날 때 까지 CPU는 다른 작업을 처리할 수 없게됩니다.

이를 해결하기 위해 Interrupt 라는 개념이 도입되었습니다. CPUI/O System인 프린터에게 출력을 요청하고 다른 작업을 진행합니다. 프린터는 출력이 완료되면 CPU에게 출력이 완료되었음을 알리는 Interrupt를 전송합니다. 신호를 받은 CPU는 하던 작업을 중지하고 출력작업을 마무리하게됩니다.

'Computer Science > OS' 카테고리의 다른 글

OS 공부하는 Jerry :: Memory  (0) 2021.12.25

댓글