운영체제 공부(0)

Flash·2023년 3월 8일
0

운영체제

목록 보기
1/3
post-thumbnail

조성호님의 쉽게 배우는 운영체제를 읽으며 정리한 글입니다.

운영체제의 구조

운영체제는 크게 두 부분으로 나눌 수 있다. 인터페이스와 커널. 인터페이스는 사용자가 접근할 수 있게, 응용 프로그램이 접근할 수 있게 제공된다. 커널은 뭘 하더라...?

그것보다 커널에 대해 먼저 얘기를 해야 인터페이스의 역할을 제대로 알 수 있다. 커널은 운영체제의 핵심 기능들을 모아둔 것이다. 메모리 관리, 프로세스 관리, 저장장치 관리 등과 같은 OS의 핵심 기능을 모아둔 것이다. 그리고 사용자와 응용 프로그램이 이 커널에게 request 를 보내고 커널이 주는 response 를 사용자와 응용 프로그램에게 돌려줄 수 있는 매개 역할을 하는 것이 인터페이스다.

시스템 호출과 디바이스 드라이버

커널 내부에 시스템 호출과 디바이스 드라이버가 있음을 볼 수 있다. 시스템 호출은 커널이 자신에게 직접 접근할 수 없도록 보호막 역할을 하는 인터페이스다. 사용자나 응용 프로그램이 OS에 직접 접근할 경우 자원의 훼손이 발생할 수 있기 때문에 시스템 호출이라는 인터페이스를 통해서만 접근할 수 있도록 설계한 것이다. 즉 응용 프로그램과 커널 사이를 연결하는 게 시스템 호출이다.

반대쪽을 보면 하드웨어와 커널 사이를 연결해주는 것이 드라이버다. 하드웨어에도 직접 접근할 경우 자원의 훼손이 발생할 수 있기 때문에 운영체제와 하드웨어 사이를 드라이버로 감싸주는 것이다. 마우스, 키보드와 같이 가장 기본적이고 획일화된 하드웨어들은 커널에서 이미 인터페이스가 존재하기 때문에 따로 드라이버를 설치할 필요가 없다. 하지만 프린터나 캡쳐보드와 같이 고사양의 디바이스들은 커널에 이 녀석들을 사용할 수 있게 해줄 인터페이스가 없기 때문에 하드웨어 제작자들이 제공하는 드라이버를 설치해야 사용할 수 있다. 즉, 하드웨어와 커널은 때로 직접 연결될 때도 있고 드라이버를 통해 연결될 때도 있다. 시스템 호출과 비교되는 지점이다.

커널의 구성

메모리 관리, 입출력 관리, 프로세스 관리와 파일 시스템 관리 등 커널의 여러 가지 기능들은 서로 유기적으로 연결돼있다.

커널의 구조는 단일형 구조, 계층형 구조와 마이크로 구조 등이 있다. 오늘날 제일 많이 쓰이는 게 계층형 구조라고 한다. 단일형 구조는 main 에 다 때려 넣는 것과 같은 개념이다. 마이크로 구조는 프로세스 관리, 메모리 관리와 프로세스간 통신 관리와 같이 가장 기본적인 것만 구현되어 있고 나머지 영역들은 사용자 영역에 구현되어 있다고 한다.

가상 머신

하나의 운영체제뿐만 아니라 다른 운영체제를 하나의 컴퓨터에서 사용하고 싶을 때 사용한다. 다만 모든 작업들이 반드시 가상 머신을 통해 진행되기 때문에 속도가 매우 느리다. 개발 언어의 호환성 문제 해결을 위해 적용될 수 있지만, 언어의 호환성 문제 자체를 해결한 것이 바로 JAVA.

컴퓨터의 기본 구성

컴퓨터의 하드웨어 구성은 <CPU + 메인 메모리 + 입력 장치 + 출력 장치 + 저장 장치> 로 구성된다. 대부분의 작업이 CPU + 메인 메모리 를 통해 이루어지기 때문에 이 둘은 필수로 분류된다. 그 외의 것들을 주변 장치라고 부른다.

메인 메모리는 전력이 공급되어야 하고 영구적 저장이 불가능하기 때문에 저장 장치를 따로 구비해야 하는 것이다. 하드 디스크와 같은 저장 장치는 전력의 on/off 와 상관없이 영구적으로 데이터를 저장할 수 있지만 메모리에 비해 느리다. 대신 값이 싸다.

메인 보드는 CPU 와 메모리 그리고 RAM 단자 그래픽 카드와 같은 녀석들을 모두 연결시켜 하나의 판에 둔 것이다. 메인 보드 위에 올려지는 장치들은 'bus' 라는 가는 선을 통해 연결되어 있다. 데이터를 주고 받기 위한 도로 정도로 생각하면 되겠다.

폰 노이만 구조

모든 프로그램은 메모리 위에 올라와야 실행될 수 있다. 는 아이디어를 통해 고안된 구조다. 즉 하드웨어는 그대로 놔둔 채로 작업하려는 프로그램만 바꿔 실행할 수 있는 구조를 만든 것이다. 기존에는 다른 용도 즉 다른 프로그래밍을 하려면 전선의 연결들을 바꾸는 하드 와이어링을 통해서만 가능했지만, 폰 노이만 구조를 통해 하드웨어는 그대로 둔 채로 다른 프로그램을 사용할 수 있게 된 것이다.

CPU의 구성과 동작

CPU 는 <ALU + Control + Register> 로 이루어져있다. ALU는 연산을 담당하고 Control은 어떤 명령을 수행할지 제어하고 Register은 CPU 내에 잠시 저장해둬야 할 데이터를 저장하는 역할을 한다.

레지스터에는 데이터 레지스터, 주소 레지스터 그 외에 특수 레지스터 안에 또 여러 종류가 있다. 특 수 레지스터에는 컴퓨터 구조에서 배웠던 PC, IR 등 명령어를 수행하기 위해 필요한 레지스터들이 있다.

이렇듯 다양한 장치들을 통해 컴퓨터가 구성되어 있는데 이들 사이에서 데이터의 전달을 맡는 버스에도 종류가 있다. 가장 크게는 시스템 버스와 CPU 내부 버스로 나눌 수 있겠다.

시스템 버스는 Front Side Bus 라고도 불리며 메인보드 앞판에 있다. CPU 와 메모리 그리고 주변 장치들까지도 데이터를 교환할 수 있게 도로를 제공하는 것이 시스템 버스.

CPU 내부 버스는 ALU, Control과 Register 사이에서 데이터를 나르는 것이 BSB(Back Side Bus)다.

메모리의 종류와 부팅

휘발성 메모리와 비휘발성 메모리로 크게 나뉜다. 메모리 보호는 현재 건드릴 레지스터의 범위 구간을 확인하고 작업을 진행하는 동안 이 한계 구간을 벗어나는지를 계속 체크하며 건드려야 할 곳만 건드리고 있는지를 봄으로써 보호한다. 부팅이란 OS도 하나의 소프트웨어이기 때문에 메모리 위에 올라가야 실행될 수 있는데, 이 OS를 메모리 위에 올리는 작업을 부팅이라고 한다. 부팅을 위한 코드가 bootstrap 이며 bootstrap 을 확인하기 위해서는 애초에 컴퓨터에 복수의 운영체제가 깔려 있어야 뭐 선택할 건지 묻는 화면을 통해 확인할 수 있다. 예전에 맥북에 window 깔았을 때 처음으로 전원 킬 때 OS 뭐 선택할 건지 묻는 바로 그 화면.

profile
개발 빼고 다 하는 개발자

0개의 댓글