본문 바로가기

정보처리기사

[ OS ] 운영체제 기초 - 운영체제 개념, 종류

운영체제의 종류

 

[1] 운영체제의 개념

- 컴퓨터 시스템의 자원들을 효율적으로 관리하며,

사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있는 환경을 제공하는 여러 프로그램의 모임 ( 시스템 소프트웨어 )

 

- 운영체제는 사용자와 하드웨어 사이의 인터페이스 역할을 한다.

 

- 여기서 하드웨어는 CPU, 주기억장치, 보조기억장치, 통신 장치, I/O 장치 등으로 구분된다.

 

- 운영체제의 관리 대상이 되는 자원은 하드웨어도 있겠으나,

소프트웨어 자원 ( ex. 프로세스 )도 포함된다.

 

사용자는 응용프로그램과 직접 상호작용하고, 응용프로그램은 내부 유틸리티 프로그램과 소통하여 HW를 간접적으로 사용한다.

 

[2] 운영체제의 특징

- 사용자 편리성

- 인터페이스

- 스케줄링 ( ex. CPU Scheduling )

- 자원관리

- 제어

 

I. 사용자 편리성 제공 & 인터페이스 기능

- 사용자가 직접적으로 하드웨어, 프로세스를 관리.제어하긴 힘들다.

마치 운전을 할 때 자동차의 엑셀을 밟으면 내부 동작이 어떻게 되냐를 알지 않고 그냥 기능만 아는 것처럼,

운영체제는 그 모든 내부 동작을 감추고 ( = 사용자가 알 필요 없게 하고 = 캡슐화 ),

사용자에게 직관적인 인터페이스를 제공한다.

 

II. 스케줄링 담당

- 다중 사용자와 다중 응용 프로그램 환경에서,

자원의 현재 상태를 파악하고 자원 분배를 위한 스케줄링을 담당한다.

( ex. CPU Scheduling )

 

III. 자원 관리

- CPU, 메모리 공간, 기억장치, 입출력 장치 등의 자원을 관리한다.

 

IV. 제어 기능

- 입출력 장치와 사용자 프로그램을 제어 ( ex. 인터럽트, 시스템 콜  cf. Polling )

 

 

[3] 운영체제에서 커널의 기능

- 운영체제는 크게 인터페이스(쉘)과 커널의 구조로 이루어져 있다.

- 운영체제의 핵심적인 기능 ( = HW를 직접 다루는 구현체 프로그램 )은 커널에 모여있다면,

인터페이스(쉘)은 이러한 커널을 사용자가 보다 편리하게 사용할 수 있게 해준다.

유저가 쉘을 통해 명령어를 입력하면, 쉘은 해당 명령어를 해석해서 그에 맞는 커널의 기능을 호출한다. 이를 통해 유저는 간접적으로 ( = 운영체제 설계자가 정해놓은 제어 범위 내에서 ) 캡슐화된 방식으로 하드웨어를 조작, 제어할 수 있다.

 

 

<커널의 기능>

- 프로세스 관리

: 프로세스 스케줄링 및 동기화 관리

: 프로세스 생성과 제거, 시작과 정지, 메시지 전달 등의 기능 담당

 

- 기억장치 관리

: 프로세스에게 메모리 할당 및 회수 관리 담당

 

- 주변장치 관리

: 입.출력 장치 스케줄링 및 전반적인 관리 담당

 

- 파일 관리

: 파일의 생성과 삭제, 변경, 유지 등의 관리 담당

 

 

[4] 운영체제의 종류

- Windows 계열

- Linux/Unix 계열

- MacOS

- Android

 

<Windows 계열 운영체제 특징>

- GUI 제공

 

- 자동감지 기능 제공 ( Plug and Play : PnP )

: 하드웨어를 설치했을 때 필요한 시스템 환경을 운영체제가 자동으로 구성해주는 자동감지 기능 제공

: 컴퓨터 시스템에 프린터나 사운드 카드 등의 하드웨어를 설치했을 때,

해당 하드웨어를 사용하는데 필요한 시스템 환경을 운영체제가 자동으로 구성해주는 기능

: PnP 기능을 활용하기 위해서는, HW 및 SW 모두 PnP를 지원해야 함.

 

- OLE ( Object Linking and Embedding ) 사용

: 개체를 현재 작성 중인 문서에 자유롭게 연결 또는 삽입하여 편집할 수 있게 하는 기능 제공

: 애플리케이션 사이에서 데이터를 공유하는 기술

-> 다른 여러 응용 프로그램에서 작성된 문자나 그림 등의 개체를

현재 작성중인 문서에 자유롭게 연결하거나 삽입하여 편집할 수 있도록 하는 기능.

 

*Object Linking(객체 연결)

: A 응용프로그램의 객체(문자, 그림)을 B 응용 프로그램에

해당 객체의 경로 등을 이용해 연결하는 것,

B 응용프로그램에서 해당 객체 수정 시 A 응용 프로그램에서도 변경사항이 적용됨.

( 프로그래밍의 함수 호출 방식 중, Call By Reference 방식과 비슷 )

 

*Object Embedding(객체 삽입)

: 어떤 객체를 다른 객체에 포함시키고 싶을 때, 해당 객체의 내용을 그대로 삽입하는 것.

포함된 후 그 전 객체를 수정해도, 삽입된 객체는 변화하지 않는다.

 

- 선점형 멀티테스킹 방식 ( Preemptive Multitasking )

: 동시에 여러 프로그램을 실행하는 멀티태스킹을 하면서,

운영체제가 각 작업의 CPU 이용시간을 제어하여 응용 프로그램 실행 중 문제가 발생하면 해당 프로그램을 강제종료시키고 모든 시스템 자원을 반환하는 방식 ( = 하나의 응용프로그램이 CPU를 독점하는 것을 방지 )

=> 멀티테스킹 방식의 한 종류로

프로세스가 CPU를 차지해서 사용하더라도,

운영체제가 타이머나 여타 트리거를 통해 개입하여 강제로 CPU 사용을 빼앗아올 수 있는 경우를

선점형 멀티테스킹이라 한다.

( cf. 비선점형 멀티테스킹 :

CPU를 차지하고 있는 쓰레드가 자신이 이제 CPU 연산이 필요 없음을 나타냈을 때에만

운영체제가 이를 회수할 수 있는 경우를 말한다. )

https://namu.wiki/w/%EB%A9%80%ED%8B%B0%ED%83%9C%EC%8A%A4%ED%82%B9#s-2

 

멀티태스킹 - 나무위키

이 저작물은 CC BY-NC-SA 2.0 KR에 따라 이용할 수 있습니다. (단, 라이선스가 명시된 일부 문서 및 삽화 제외) 기여하신 문서의 저작권은 각 기여자에게 있으며, 각 기여자는 기여하신 부분의 저작권

namu.wiki

 

// (23.06.25) 나무위키

현행 대부분의 OS ( Windows, Linux, OS X .. ) 등은 모두 선점형 멀티테스킹 방식이다.

이유는 간단한게, 범용 운영체제이기에 여러 프로그램을 실행시키는데

그 프로그램들을 모두 검증된 프로그램이 아니고, 버그를 가지고 있다.

만약, 어떤 프로세스가 버그에 빠져서 자원을 독식하려한다면,

멀티테스킹이 제대로 이루어지지 않을 것이다.

 

 

 

< Linux / Unix 계열 운영체제 특징>

- 대화식 운영체제 기능 제공

: 사용자 명령 기반 대화식 운영체제 기능 제공

 

- 다중 작업 기능 제공

: 다수의 작업(프로세스)가 중앙 처리 장치와 같은 공용자원을 나누어 사용하여,

한 번에 하나 이상의 작업을 수행하는 기능 제공

 

- 다중 사용자 기능 제공

: 여러 대의 단말이 하나의 컴퓨터에 연결되어서,

여러 사람이 동시에 시스템을 사용하여 각각의 작업을 수행할 수 있는 기능 제공

 

- 이식성 제공

: 90% 이상 C언어로 구성 & 시스템 프로그램이 모듈화되어 있어서

다른 하드웨어 기종으로 쉽게 이식이 가능

 

- 계층적 트리 구조 파일 시스템 제공

: 통합적인 파일 관리가 용이하다.

 

<Mac OS 특징 ( OS X )>

- 유닉스계열

- 개발환경 자체가 유닉스 환경에 최적화되어있는 경우가 많음

- iOS 개발 가능

 

<Android 운영체제 특징>

- 휴대 전화를 비롯한 휴대용 장치를 위한 운영체제,

미들웨어, 사용자 인터페이스 그리고 표준 응용프로그램(웹 브라우저, 이메일 클라이언트..)을

포함하고 있는 운영체제

 

- 리눅스 커널 위에서 동작하며, Java 와 Kotlin 언어로 응용 프로그램을 작성할 수 있도록 하고,

컴파일된 바이트코드를 구동할 수 있는 런타임 라이브러리를 제공한다.

 

- 안드로이드 소프트웨어 개발 키트(SDK)를 통해

응용 프로그램을 개발하는 데 필요한 각종 도구와 API를 제공한다.

 

*) 미들웨어

- 컴퓨터 제작 회사가 사용자의 특정한 요구대로 만들어 사용하는 프로그램,

운영체제와 응용 소프트웨어의 중간에서 조정과 중개의 역할을 수행하는 소프트웨어

 

- 응용 소프트웨어가 운영체제로부터 제공받는 서비스 이외에

추가적으로 이용할 수 있는 서비스를 제공하는 컴퓨터 소프트웨어

 

- 양 쪽을 연결하여 데이터를 주고받을 수 있도록 중간에서 매개 역할을 하는 소프트웨어,

네트워크를 통해서 연결된 여러 개의 컴퓨터에 있는 많은 프로세스들에게

어떤 서비스를 사용할 수 있도록 연결해주는 소프트웨어

 

- Database System, 전자 통신 소프트웨어, 메시지 및 쿼리 처리 소프트웨어

 

 

'정보처리기사' 카테고리의 다른 글

[ OS ] 메모리 관리  (0) 2023.06.26