운영체제와 정보기술의 원리 - 운영체제 개요

kimwoohyun·2025년 7월 7일
0

이 포스트는 운영체제와 정보기술의 원리 책을 읽고 정리한 것입니다.


강좌와 책을 병행해서 보려고한다.

목표는 8월까지 강좌와 책 모두 보는 것이다.

운영체제 개요

운영체제란?

컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어이다.

운영체제는 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층이다.

영어로는 operating system, 줄여서 os라고도 한다

하드웨어는 운영체제를 통해 사용자에게 쓰일 수 있는 진정한 컴퓨터 시스템이 된다.

이런 면에서 os를 지칭할 때 보통 기반이나 틀이 되는 하드웨어를 지칭할 때 쓰이는 '시스템'이라는 용어를 사용한다.

커널

컴퓨터는 운영체제 중 필요한 부분만 메모리에 탑재한다.

이때 메모리에 상주하는 운영체제 부분을 커널이라고 한다.

유틸리티

커널과는 반대로 시스템을 위한 광범위한 유틸리티도 넓은 의미에선 운영체제의 일부이다.

파일을 복사하는 프로그램 등이 이에 해당한다.

운영체제의 기능

하드웨어를 위한 기능

컴퓨터 시스템 내의 자원을 효율적,그리고 형평성 있게 관리하는 것이다.

자원이란, CPU,메모리,하드디스크등의 하드웨어 자원 뿐만 아니라, 소프트웨어 자원까지 통칭해서 일컫는 말이다.

효율성이란 컴퓨터가 가장 좋은 성능을 내도록하는 것이다.

형평성이란 일부 사용자 및 프로그램이 너무 지나치게 희생되지 않게하는 것이다.

사용자를 위한 기능

사용자 및 프로그램들에게 독자적으로 컴퓨터를 사용하는 것과 같은 '환상'을 준다.

하드웨어를 직접 다루는 복잡한 기능은 운영체제가 대행하고 각 사용자 및 프로그램은 그 내용을 알지 못해도 프로그램을 실행할 수 있도록 해준다.

예를 들어, 파일이 디스크에 어떻게 저장되는지 우리는 모르지만, 운영체제가 제공하는 인터페이스를 통해 이를 쉽게 할 수 있다.

보안 기능

악의성 프로그램이 다른 사용자 프로그램에 올라가 있는 메모리 영역을 참조한다 던지,

다른 사용자의 사적인 파일에 접근한다던지,

운영체제가 올라가 있는 메모리 영역을 변경하는 등

위협으로부터 사용자와 운영체제를 보호하는 역할을 한다.

운영체제의 분류

단일 작업용(single tasking)과 다중 작업용(multi tasking)

운영체제는 동시 작업을 지원하는지 여부에 따라 단일 작업용 운영체제와 다중 작업용 운영체제로 나누어볼 수 있다.

한 번에 하나의 프로그램만 실행하나 혹은 여러 프로그램만 실행하냐의 차이이다.

단일 작업용은 DOS, 다중 작업용은 MS 윈도우나 유닉스 등이 있다.

multi taking os

시분할 시스템 (time sharing)

CPU는 매순간 하나의 프로그램만 실행할 수 있다.

그래서 운영체제가 다중작업을 처리할 땐, CPU가 짧은 시간의 규모로 여러 프로그램을 번갈아 실행하게된다.

이를 시분할 시스템(time sharing system)이라고 한다.

현대의 범용 컴퓨터는 대부분 time sharing system이다.

보통 시분할 시스템은 일괄 처리 방식과 달리 사용자의 요청에 대해 바로바로 응답하기 때문에 대화형 시스템의 특징을 지닌다.

다중 프로그래밍 시스템(multi programming system)

반대로 메모리의 경우 여러 프로그램들이 조금씩 메모리 공간을 보유하며 동시에 메모리에 올라가있을 수 있다.

이처럼 메모리를 다분할 해 프로그램들을 동시에 올려놓고 처리하는 시스템을 다중 프로그래밍 시스템(multi-programming system)이라한다.

대화형 시스템 (interactive system)

multi tasking os의 경우에, 여러 프로그램을 실행해도 사용자 개개인의 관점에서는 키보드의 입력 결과를 곧바로 화면에 보여주기 때문에 이러한 시스템을 대화형 시스템(interactive system)이라고도 한다.

다중 처리기 시스템(multi-processor system)

앞서 설명한 용어들은 cpu가 하나인 시스템에도 해당하는 성질이다.

이에 반해 multi-processor system은 하나의 컴퓨터 안에 여러개의 cpu가 설치된 경우를 뜻한다.

속도는 빠르나 os입장에서 더 복잡한 매커니즘을 요구한다.

이 책에선 별도의 언급이 없는 이상 single-processor system을 다룬다.

다중 사용자용시스템

다중 사용자에 대한 동시 지원 여부에 따라 다중 사용자용 os라고 하기도 한다.

흔히 서버라고 부르는 컴퓨터는 다중 사용자용 os의 예시이다.

단일 사용자용 os는 다시

단일 사용자용 단일 작업용 컴퓨터인지

단일 사용자용 다중 작업용 컴퓨터인지로 분류할 수도 있다.

일괄 처리 방식 (batch processing)

일괄처리 방식 (batch processing) 방식은 요청된 작업을 일정량씩 모았다가 한번에 처리하는 방식이다.

사용자 입장에서 응답시간이 길다는 단점이 있다.

실시간 운영체제(real time)

정해진 시간 안에 어떠한 일이 반드시 처리됨을 보장하는 시스템에서 사용된다.

시간안에 처리되지 못한다면 아예 실행을 하지 않거나 큰 위험을 초래하는 곳에서 사용된다(미사일 제어시스템, 반도체 등등..)

hard realtime system

hard realtime system이란 주어진 시간안에 처리되지 않을 경우 매우 위험한 시스템을 말한다.

soft realtime system

hard realtime system처럼 시간안에 처리되지 않는다고 큰일나진 않지만, 스트리밍 시스템과 같이 정해진 시간 흐름에 따라 전달되어야 올바른 기능을 수행하는 시스템을 말한다.

운영체제의 예

MS 윈도우

MS-DOS와 윈도우 3.1등을 한층 발전시킨 개인용 컴퓨터를 위한 운영체제이다.

그래픽환경과 아이콘 방식을 기본적으로 채택하면서 초보자에게 장벽이 낮은 운영체제이다.

또한 하드웨어나 시스템이 변경되면 그에 따라 운영체제가 설정된다는 점에서 플러그 앤 플레이(plug and play)라고한다.

그외에도 자체적으로 네트워크 프로그램을 지원하기 때문에 사용자들끼리 파일을 공유하거나 프린터등의 하드웨어를 공유할 수 있기도 한다.

윈도우는 유닉스에 비해 안정성이 떨어지지만 사용하기 편리하여 가장 보편적으로 사용된다.

최근엔 안정성이 크게 향상됐다고 평가받기도 한다.

윈도우 중엔 안정성이 높고 다중 사용자용 운영체제인 윈도우 NT가 있다.

UNIX

유닉스는 프로그램 개발 환경을 위해 설계된 운영체제이다.

이식성이 좋고 커널의 크기가 작으며, 소스코드가 공개되었다는 점으로 학계를 바탕으로 많은 연구와 함께 사용이 확대되고 있다.

이식성이란 하드웨어와 관계없이 얼마나 잘 작동하는가를 나타내는 지표이다.

유닉스는 이러한 이식성이 좋은 최초의 운영체제이다.

또한 그 당시 대부분의 운영체제는 어셈블리어로 개발되었는데,

유닉스는 c언어로 개발되었다는 특징이 있다.

그래서 이해하기도 쉽고 이식성도 좋았던 것이다.

유닉스의 소스코드는 대학이나 연구소 등에서 연구를 위해 널리 쓰이며,

최근엔 Linux의 등장으로

대형서버 뿐만 아니라 개인용 컴퓨터에서도 널리 쓰이고 있다.

MS 윈도우는 개인용컴퓨터, UNIX는 대형 서버 및 전문적 목적의 컴퓨터로 사용하기에 적절하다.

운영체제의 자원 관리 기능

하드웨어 자원

CPU

CPU는 통상적으로 컴퓨터 한대당 하나씩 장착되기 떄문에 여러 프로세스들이 CPU를 잘 나눠 쓸 수 있도록 해야한다.

CPU 스케줄링이란 매 시점 어떠한 프로세스에 cpu를 할당할지 결정하는 것이다.

목적은 cpu를 효율적으로 사용하면서도 특정 프로세스가 불이익을 당하지 않도록 하는 것이다.

방식에는 크게 3가지로 나뉜다.

선입 선출

먼저 도착한 프로세스 먼저 처리해주는 방식이다.

cpu자체의 효율적인 사용 측면에서는 문제가 없지만

전체 시스템 관점에선 비효율을 초래한다.

점유 시간이 높은 프로세스가 맨 처음 도착할 경우 그 뒤의 프로세스들이 처리되지 못하기 때문이다.

라운드로빈

모든 프로세스가 동일한 시간 간격으로 번갈아가면서 cpu를 사용하는 방식이다.

긴 작업을 요하는 프로세스가 작업을 완료하지 못하더라도 시간이 끝나면 맨 뒤로 가서 기다려야한다.

일반적으로 1회 할당 시간은 ms이며

사용자의 응답시간은 1초 아래를 보장받을 수 있다.

우선순위 스케줄링

상대적으로 더 중요한 프로세스에 우선순위를 부여하여 그 순서대로 cpu를 사용하는 방식이다.

오랫동안 시행되지 않은 프로세스의 우선순위를 높여주는 방식도 고려할 수 있다.

메모리

운영체제는 주소를 통해 메모리의 어느 부분을 어떤 프로세스가 점유하고 있는지 파악하여, 프로세스의 메모리 사용을 관리한다.

어떤 경우에는 메모리를 조금만 할당해도 수행가능하고, 어떤 경우에는 메모리를 빨리 회수해도 프로세스에 영향이 없는 경우가 있다

os는 이러한 경우들을 고려하여 효율적으로 메모리를 관리한다.

추가적으로 각 프로세스들이 서로의 메모리 영역을 침범하지 않도록 하여 보안을 유지하는 것도 운영체제의 역할이다.

고정분할 (fixed partition)

메모리를 고정된 영역으로 나누어 분할하여 프로그램을 탑재한다.

고정된 영역엔 하나의 프로그램만 탑재될 수 있다.

단, 이방식은 분할 크기보다 큰 프로그램은 탑재할 수 없다는 단점과

영역의 개수만큼만 프로그램이 할당된다는 단점이 있다.

영역에 할당되고 남은 메모리를 내부조각(internal fragmentation)이라고 하는데,

이 메모리는 다른 어떤 프로그램에도 사용될 수 없으므로 비효율적으로 낭비되는 공간이다.

partition의 크기가 80이고

여기에 할당된 프로그램의 크기가 60일경우 20만큼의 내부조각이 발생한다.

가변분할 (variable partition)

프로그램에 할당하려는 메모리 크기만큼 partition을 나누는 것을 말한다.

그러나 메모리크기보다 큰 프로그램은 탑재할 수 없다는 단점이 있다.

또한 메모리 partition의 크기와 개수가 동적으로 변하므로 이를 관리하기위한

기술적 관리기법이 필요하다.

가변 분할을 하다보면 메모리를 할당하고 남은 외부조각(external fragmentation)이 발생한다.

외부조각은 크기가 작아 다른 프로그램을 올릴 수 없는 메모리 영역이다.

이 또한 비효율을 초래한다.

OS,A,B가 각각 다음과 같이 탑재돼있고, A의 메모리 사용이 끝나 크기가 80인 C가 A가 있던 자리에 탑재된다.

이때 C의 외부와 B의 외부에 메모리 20의 외부조각이 생기며, 이 공간엔 메모리 20이상의 프로그램을 적재할 수 없게된다. 이처럼 메모리가 연속적이지 않게되어 외부 조각이 생기게된다.

memory compaction을 통해 해결할 수 있다.

가상메모리

현대의 범용 컴퓨터에서 가장 많이 사용되는 방식이다.

메모리의 크기가 실행하려는 프로그램의 크기보다 작아도 프로그램의 실행을 가능하게 한다

가상 메모리를 만들어 이 메모리에 프로그램을 탑재한다.

가상 메모리 주소 공간은 페이지(page)라는 작은 단위로 나뉜다.

가상 메모리는 0번지부터 시작하며, 이를 실제 물리 메모리와 보조 기억장치에 매핑하는 기술을 활용한다.

가상 메모리는 실제 물리 메모리와 보조기억장치에 데이터를 나누어 저장하며,

프로그램을 실행할 때 모든 부분이 물리 메모리에 탑재되어야 하는 것은 아니기 때문에

일부는 실제 물리 메모리에, 일부는 보조 기억장치에 탑재한다.

입출력 관리

인터럽트를 통해 입출력이 관리된다.

주변장치 및 입출력장치는 컨트롤러라는 작은 cpu를 갖고 있다.

이 컨트롤러가 cpu가 필요한 상황이 오면 인터럽트라는 요청을 보낸다.

cpu는 인터럽트에 의한 요청 서비스를 수행한다.

이후 자신의 작업상태를 저장하고 주변장치에 cpu를 할당해준 후,

저장해둔 자신의 작업상태를 불러온다.

이러한 일련의 과정을 인터럽트 처리 루틴이라고 한다.

요청하는 장치와 발생상황에 따라 다양한 종류가 있으며 이러한 처리 루틴은

커널에 코드로 저장돼있다.

profile
숭실대 컴학 23

0개의 댓글