BoostUs로그인

[쉽게 배우는 운영체제] 운영체제와 컴퓨터 구조

J003 강동훈10
0
0
2025-06-15
원문 보기
[쉽게 배우는 운영체제] 운영체제와 컴퓨터 구조 글의 썸네일 이미지

⚙️ 운영체제

컴퓨터는 데이터를 통해 작업을 처리하고 결과를 출력하거나 저장한다. 컴퓨터를 통해 데이터를 의미 있는 자료로 처리하면 이를 정보(Information)라고 부르며 데이터를 통해 정보로 만드는 모든 기술을** IT(Information Technology)**라고 부른다.

컴퓨터는 크게 하드웨어와 소프트웨어로 분류되며 소프트웨어는 응용 프로그램과 시스템 소프트웨어로 구분된다.

컴퓨터의 다양한 프로그램들은 키보드, CPU, 메모리 등 다양한 컴퓨터 자원을 공유한다. 하지만 각 프로그램이 필요에 따라 마음대로 자원을 차지하게 되면 컴퓨터는 오류를 발생시킨다. 이런 잘못된 동작으로 컴퓨터가 망가지는 것을 방지하기 위해 컴퓨터 전체를 관리하고 운영하는 소프트웨어인 운영체제(Operation System, OS)가 탄생하게 된다.

역할

⚙️ 커널과 인터페이스

컴퓨터 구조

시스템 호출 사용자, 응용 프로그램이 컴퓨터 자원을 사용하기 위해 제공되는 인터페이스이다.

예를 들어, 응용 프로그램 A와 B가 하드디스크에 데이터를 각각 저장하려고 할 때, 두 프로그램이 메모리에 직접 접근하면 기존 저장된 데이터가 삭제될 수도, 비효율적인 저장이 발생할 수도 있다.

하지만 커널이 제공하는 write() 시스템 콜을 통해 요청하면 응용 프로그램은 어느 위치에 어떻게 저장되는 지 알 지 못하더라도 커널을 통해 안전하게 저장이 가능하며 read()를 통해 데이터를 읽어올 수 있다.

시스템 호출은 커널이 제공하는 시스템 자원을 사용하기 위한 하나의 함수이며 응용 프로그램은 자원에 접근하거나 운영체제의 서비스를 이용하기 위해서는 시스템 콜을 사용해야 하며 이를 통해 컴퓨터 자원에 대한 안정성을 확보할 수 있다.

드라이버

커널은 주변 장치와 데이터를 주고 받을 수 있는 표준 방식을 제공하고 있으며 다양한 주변 장치들은 커널과 통신하기 위해 표준 방식에 따른 드라이버가 제공된다.

드라이버는 커널이 제공할 수도 있고 혹은 주변 장치의 제작자가 추가적인 기능을 제공하는 경우에 드라이버를 따로 추가되어 설치할 수 있다.

커널

핵심 기능설명
프로세스 관리프로세스에 CPU 배분 및 작업을 위한 환경 제공
메모리 관리프로세스 작업 공간 제공
파일 시스템 관리데이터 저장 및 접근 인터페이스 제공
입출력 관리필요한 입출력 서비스 제공
프로세스 간 통신 관리공동 작업을 위한 프로세스 간 통신 환경 제공

⚙️ 컴퓨터 구조

폰노이만 구조

CPU, 메모리, 입출력장치, 저장장치가 버스로 연결된 구조

폰노이만 구조가 등장하기 전에는 컴퓨터의 전선을 직접 연결하여 회로를 구성하는 하드와이어링 형태였으며 다른 용도로 사용하기 위해서는 전선을 다시 연결하여야 했다.

하지만 폰노이만 구조에서는 메모리를 이용한 프로그래밍이 가능한 컴퓨터 구조이기 때문에 하드웨어의 변경없이 메모리에 다른 프로그램을 올리면 여러 용도의 프로그램을 실행시킬 수 있게 되었다.

즉, 현대에 사용되는 폰노이만 구조에서 모든 프로그램은 메모리에 올라와야 실행이 가능하다.

클록과 헤르츠

CPU는 일정한 박자에 맞춰 작업이 진행되며 이 박자를 클록(Clock)이라고 한다. 데이터를 가져오거나 저장하는 작업 또한 해당 클록에 맞춰 작업이 실행된다.

헤르츠(Hz)는 1초 동안 몇 번의 작업이 진행되는가, 몇 번의 클록 틱이 발생하는 가를 의미하는 단위이다.

⚙️ CPU와 메모리

CPU의 구성요소

  1. ALU(Arithmetic and Logic Unit): 산술논리 연산장치
  2. 제어장치: 작업을 지시하는 장치
  3. 레지스터(Register): 데이터를 임시로 보관하는 공간
//Pseudo Code
int D2 = 2;
int D3 = 3;
int sum;

sum = D2 + D3

//Assembly Pseudo Code LOAD mem(100), register2 LOAD mem(104), register3 ADD register5, register2, register3 MOVE register5, mem(160)

CPU는 고급 언어를 이해할 수 없기 때문에 컴파일을 통해 기계어로 변환을 시켜 작업한다. 기계어와 유사한 어셈블리어로 CPU 작업 과정을 살펴볼 수 있다.

  1. 메모리 100번 주소의 값을 레지스터 2로 이동시킨다.
  2. 메모리 104번 주소의 값을 레지스터 3으로 이동시킨다.
  3. 레지스터 2와 3의 합을 레지스터 5에 저장한다.
  4. 레지스터 5에 저장된 값을 메모리 160번 주소로 이동시킨다.

  1. 제어장치는 메모리로부터 연산에 필요한 데이터를 레지스터로 저장하라는 명령을 내린다.
  2. 레지스터에 있는 값을 ALU로 보내서 연산하라는 명령을 내린다.
  3. ALU는 연산 후 결과 값을 레지스터에 임시로 저장한다.
  4. 레지스터에 저장된 결과값을 메모리에 저장하라는 명령을 내린다.

레지스터 종류

데이터 레지스터(Data Register, DR): 메모리에서 가져온 데이터 임시 보관

주소 레지스터(Address Register, AR): 데이터 혹은 명령어가 저장된 메모리 주소 저장

특수 레지스터

  1. PC에는 코드의 첫 행을 의미하는 1이 저장되며 1행 코드인 LOAD mem(100), register(2);를 실행한다.
  2. 명령어 레지스터에는 현재 실행 중인 코드의 명령어인 LOAD가 저장되고 메모리 주소 레지스터에는 작업에 필요한 메모리 주소인 100이 저장된다.
  3. 제어장치는 두 데이터를 통해 메모리 관리자에게 메모리 100번 주소의 데이터를 불러온다.
  4. 메모리 관리자는 직접적으로 CPU 레지스터에 접근할 수가 없기에, 메모리 버퍼 레지스터에 저장시킨다.
  5. 제어장치는 메모리 버퍼 레지스터의 값을 레지스터 2로 이동시킨다.

Reference