본문 바로가기

Web Development/CommonSense

[5장] 운영체제

이제 컴퓨터의 기초적인 것들을 마치고 컴퓨터 구조에 대해서 '운영체제', '데이터베이스', '네트워크', '정보보안'에 대한 개요들을 잡아보려고 합니다. 우선 이번장에서는 운영체제에 대해서 먼저 살펴보도록 하겠습니다 !

 

 

☞ 본 포스팅은 공부 내용을 바탕으로 정리하는 것입니다. 주관적이며 정확하지 않은 내용이 포함 되어있을 수 있습니다.

☞본 포스팅은 한빛출판사의 '컴퓨터사이언스'책을 공부한 내용을 토대로 요약한 내용입니다.

 

 

1. 운영체제의 개념과 역할

 

운영체제(Operating System) 란, 컴퓨터 시스템과 사용자를 연결해주는 역할을 하는 프로그램입니다. 인터페이스를 제공해주고, 무한하지 않은 컴퓨터 자원을 효율적으로 분배해주는 역할을 하여 사용자가 컴퓨터 시스템을 사용하는데 있어 최적화 된 환경을 제공해주고, 안정적으로 동작할 수 있도록 도움을 줍니다.

즉 '시스템자원관리'의 역할을 주로 수행합니다.

조금만 더 간단히 분류해보자면, 운영체제는

'프로세스관리(주기억장치에서 실행되는 프로그램을 관리)', '기억장치관리', '입출력장치관리', '정보관리'

등의 역할을 수행합니다.

 

 

 

 

2. 프로세스관리/CPU스케쥴링/기억장치관리/입출력장치관리/정보관리

위에서 언급한대로 운영체제는 '프로세스관리', '기억장치관리', '입출력장치관리', '파일관리' 등의 역할을 수행합니다.

이에 대해 조금 자세히 살펴보도록 하겠습니다.

 

① 프로세스관리

컴퓨터는 프로그램을 CPU 주기억장치라는 작은 공간에 적재해 실행합니다.

초기에는, 한개의 프로그램 만을 실행 지원하였으나 최근에는 여러 프로그램을 동시에 실행해 이용합니다.

그러면서 프로세스라는 개념이 들어서게 되었는데요.

프로세스(Process, task)는 '실행중인 프로그램'이라고 정의할 수 있습니다.

1960년 등장한 'Multics'라는 운영체제에서 최초로 등장하게 된 개념입니다.

 

프로세스는 초기 -> 준비 -> 실행 -> 대기 -> 종료 단계를 거치게됩니다.

초기상태

프로그램을 켜서, 프로세스 단계에 진입시작한 상태를 의미합니다.

준비단계

프로세스가 CPU할당을 위해 큐(Ready Queue)라는 공간에서 대기중인 상태를 의미합니다.

실행상태

프로세스가 CPU를 점유해 작업을 수행중인 단계입니다.

대기상태

프로세스가 CPU를 점유해 작업을 실행중에 입출력 요청이오면 해당 요청을 처리하는 상태를 의미합니다.

종료상태

프로세스 실행이 끝난 상태입니다.

 

운영체제는 이러한 '프로세스'를 관리해 시스템 자원을 효과적으로 분배하고 최적화하는 작업을 수행합니다.

 

 

② CPU 스케쥴링

위에서 프로세스를 위해 CPU를 점유해 실행과정을 거치게되는데요.

CPU스케쥴링은 CPU를 어떻게 프로세스에 할당할지 작업 스케쥴링 방법들입니다.

여기에도 여러가지 기법들이 있습니다.

FCFS, Round-Robin, SJF, SRT, HRN, MLQ, MFQ 등입니다. 하나씩 간단히만 살펴보겠습니다.

그전에 '큐(Ready Queue)'란, 프로세스가 CPU 점유 전에 대기하는 공간을 의미합니다.

FCFS(Frist Come, First Serve)

큐에 대기된 순서대로 CPU를 할당해 처리하는 방식입니다.

Round-Robin

FCFS처럼 순서대로 처리하나, 프로세스 별 시간을 할당해 처리하는 방식입니다.

SJF(Shortest Job First)

이 기법은 말그대로, 실행시간이 가장 짧은 것을 우선적으로 선별해 처리하는 방식입니다.

SRT(Shortest Remnaining Time)

실행중 프로세스와 대기중 프로세스 중 빠르게 처리할 수 있는 것을 먼저 처리하는 방식입니다.

HRN(Highest Response Ratio Next)

위와같은 방식들로 처리하면 처리시간이 긴 프로세스는 지속적으로 처리가 안되는 경우가 있을 수 있는데요, 실행시간이 길어 우선순위가 뒤로 밀려 있더라도 대기시간이 오래된 것을 계산에 포함시켜 우선순위를 정해 처리하는 방식입니다.

MLQ(Multi-Level Queue)

여러프로세스를 특성에 따라 여러개의 큐를 만들어 배정하고, 각 큐에 특징에 최적화된 스케쥴링 기법을 적용하는 방식입니다.

MFQ(Multi-Level Feedback Queue)

위 MLQ기법처럼 여러개의 큐를 만들어 배정하고, 위에서는 단순히 각각의 스케쥴링 기법을 다르게했다면 여기서는 우선순위를 부여해 CPU 할당량과 시간을 다르게 분배하는 방식입니다. 예를들어, 간단한 작업의 큐에는 조금의 CPU할당량과 조금의 시간을, 복잡한 작업의 큐에는 많은 CPU할당량과 많은 시간을 할당합니다.

 

 

③ 기억장치관리

기억장치는 주기억장치와 보조기억장치로 구분되며, '가상기억장치'라는 개념이 있습니다.

가상기억장치란, 프로그램이 주기억장치에 존재하지 않아도 가상의 개념을 이용해 실행할 수 있도록 하는 장치입니다.

이러한 기억장치는 초기 한가지 프로그램만을 이용했을 때,

실행중 프로그램을 CPU에 적재하는 방식인 '단일 프로그래밍 기법' 과,

다수의 프로그램을 CPU에 적재하는 방식인 '다중 프로그래밍 기법'으로 분류됩니다.

다중프로그래밍 기법에는 '고정분할방식' , '가변분할방식'이 있습니다.

고정분할방식 주기억장치를 고정된 크기로 여러개 분할해, 프로그램을 각 분할영역에 할당하는 방식입니다.

고정적으로 크기를 두기에 프로그램이 작으면 빈 공간이 생겨납니다. 이를 '단편화(Fragmentation)'현상이라 합니다.

가변분할방식은 주기억장치를 주기억장치에 프로세스가 할당되는대로 그 프로세스의 크기에 맞게 주기억장치 공간을 할당해주는 방식입니다. 이는 단편화 현상과 같은 낭비를 최소화 시킬 수 있습니다.

 

운영체제는 이러한 기억장치의 관리 역할 또한 수행합니다.

엄청 똑똑하네요 -_-^..?

 

 

④ 입출력장치관리

운영체제는 위 프로세스관리파트에서 설명한 것처럼,

이용자의 입출력 요청에 따라 이를 처리하고 실행중인 프로세스를 대기상태로 전환하는 작업을 하게됩니다. 

이를 운영체제의 입출력장치관리 역할로 볼 수 있습니다.

 

 

⑤ 정보관리

운영체제는 파일과 디렉터리(폴더)를 관리합니다.

사용자에게 인터페이스를 제공해주고,

파일의 CRUD(생성,읽기,수정,삭제)기능을 할 수 있게해주며,

파일의 공유가 가능하게하며, 파일의 백업을 가능하게합니다.

또한 보안적 측면에서 파일 및 디렉토리를 지켜주는 정보보호의 역할 또한 수행합니다.

 

 

 

 

 

3. 운영체제의 작업처리방식

운영체제는 CPU의 작업처리 방식에 따라서

'일괄 처리 시스템', '다중 프로그래밍 시스템', '다중 처리 프로그램', '시분할시스템', '실시간 시스템', '분산 처리 시스템' 등으로 분류할 수 있습니다. 아래에서 하나씩 자세히 살펴보겠습니다.

 

① 일괄처리시스템(Batch Processing System)

1950년대 초기에 등장한 자료처리방식으로, 자료를 받으면 모아두었다가 한꺼번에 처리하는 시스템입니다.

예를들면, 전기요금, 수도세, 가스요금 등이 이에 해당합니다.

이는 효율적이지만, 한꺼번에 처리하기에 반환시간이 다소 긴 단점을 가지고 있습니다.

 

② 다중 프로그래밍 시스템(Multi-programming System)

1960년대 초에 등장한 자료처리방식으로, 여러 프로그램을 주기억장치에 보내고 하나씩 번갈아가면서 처리하는 방식.

예를들어, 워드(10pg), 파워포인트(10pg) 작업을 하고있다고 가정합니다.

두 프로그램을 동시에 CPU에게 작업처리 요청을 하는데요.

CPU는 이를 워드(5/10pg) -> 파워포인트(5/10pg) -> 워드(10/10pg) -> 파워포인트(10/10pg)를 처리하는 방식입니다.

 

③ 다중 처리 시스템(Multi-processing System)

요즘 보면 쿼드코어 듀얼코어 이런 말 쉽게 들어보셨을거에요. 컴퓨터가 여러개의 두뇌를 가졌다고 흔히 비유하죠.

다중처리시스템은 컴퓨터에 여러개의 CPU를 탑재해 동시에 여러프로그램을 처리할 수 있는 방식입니다.

위 ②번에서는 한개의 CPU가 여러 작업을 번갈아가며 처리했다면,

'다중처리시스템'은 애초에 CPU를 여러개를 밖아둔거죠.

 

④ 시분할 시스템(Timesharing System)

CPU에게 각 작업별로 일정 작업시간을 할당해 동작하는 방식입니다.

예를들어, 1번CPU 2번 CPU가 있다고 가정합시다.

워드작업을 하고있습니다. CPU당 작업할당시간은 3초입니다.

그럼 워드작업을 CPU가 처리할 때,

1번 CPU는 3초 동안 할 수 있는 작업을 처리한 뒤, 2번 CPU에게 전달해버립니다.

 

⑤ 실시간 처리 시스템(Real-time System)

말그대로 사용자가 시스템에게 데이터를 요청하면 즉각적으로 처리한 뒤 바로 결과를 보냅니다.

예를들어, 일종의 모니터링 시스템을 들 수 있습니다.

모니터링 시스템은 무언가를 감시하고 실시간 상태를 나타내어 문제점을 사용자에게 전달하는 시스템입니다.

 

⑥ 분산처리시스템(Distributed Processing System)

통신&네트워크를 활용해 다수의 컴퓨터를 연결하고,

연결된 컴퓨터 시스템들에게 작업과 자원을 분산시켜 처리하는 방식입니다.

 

 

 

자 여기까지가 운영체제의 동작구조 및 원리 등등 운영체제에 관련한 복잡한이야기들을 해보았습니다.

이제는 운영체제가 어떻게 발전되어왔는지 어떤 운영체제들이 있는지 한번 간단히 살펴보겠습니다.

후... 많다많아..

 

 

운영체제들에는 어떤것이?

① 유닉스(Unix)

유닉스는 1969년 '벨연구소'에서 'Ken Thomson'이 만든 운영체제입니다.

유닉스는 95%이상이 C언어로 구성되어 '우수한 이식성'을 띄고, 특정파일에 접근이 용이한 '계층적 파일시스템'을 가지고 있으며, 다중작업 및 다중사용자가 작업이 가능하도록 되어있습니다. 이러한 장점들로 인해,

현재도 연구기관, 대학, 대기업 등 다양한 곳에서 널리 활용되고 있습니다.

② 리눅스(Linux)

리눅스는 1991년 'Linus Torvals'가 만든 운영체제입니다.

유닉스에 호환이 가능하며, 공개형 오픈소스입니다. 때문에 자유롭게 수정 배포가 가능합니다.

뿐만아니라 네트워크 운영체제로 사용이 가능해 서버를 구축 할 수 있으며, 터미널환경을 지원합니다.

이러한 장점들로 인해 많은 개발자에게 사랑받고 있습니다.

리눅스는 크게 데비안(Debian), 레드햇(RedHat), 슬랙웨어(SlackWare) 계열로 구분되며,

그 중, 데비안에서는 우분투(Ubuntu) 래드햇에서는 CentOS 슬랙웨어에서는 SUSE가 대표적입니다.

 

③ 윈도우(Window)

윈도우는 우리 모두가 평소에 사용하고 있으니 잘 아실 것이라 판단해 생략합니다.

다만, 그거아세요? 애플의 맥OS가 윈도우보다 먼저 나왔다는 것을...

그래서 MS에서는 맥OS에 견주기위해 윈도우를 만들었다는 것을...

 

④ MAC OS

맥 OS는 처음 개발되었을 때는 아무이름이 없었다고해요.

그런데 97년 맥 OS7.6 버전부터 'MAC OS'라는 이름을 붙이기 시작했습니다.

이 또한 윈도우처럼 우리가 흔히 사용하고 있으니 잘 아실 것이라 판단해 생략합니다.

 

 

 

- E N D -