운영체제 종류

2022. 9. 13. 17:27정처기(실기)/응용 SW 기초 기술 활용

(1) 운영체제의 개념

1. 운영체제란?

- 운영체제는 사용자가 컴퓨터의 하드웨어를 쉽게 사용할 수 있도록 인터페이스를 제공해 주는 소프트웨어이다.

- 운영체제는 한정된 시스템 자원을 효과적으로 사용할 수 있도록 관리 및 운영함으로써 사용자에게 편리성을 제공한다.

- 운영체제는 컴퓨터 시스템과 사용자 간의 인터페이스 기능을 담당한다.

 

2. 운영체제의 특징

- 운영체제는 사용자 편리성, 인터페이스, 스케줄링, 자원관리, 제어 기능의 특징이 있다.

 

▼ 운영체제 특징

특징 설명
사용자 편리성 제공 한정된 시스템 자원을 효과적으로 사용할 수 있도록 관리 및 운영
인터페이스 기능 컴퓨터 시스템과 사용자를 연결
스케줄링 담당 다중 사용자와 다중 응용 프로그램 환경하에서 자원의 현재 상태를 파악하고 자원 분배를 위한 스케줄링 담당
자원 관리 CPU, 메모리 공간, 기억장치, 입출력 장치 등의 자원 관리
제어 기능 입출력 장치와 사용자 프로그램을 제어

 

① 운영체제에서 커널의 기능

- 운영체제는 크게 쉘 + 커널의 구조이다.

- 운영체제의 핵심적인 기능들이 커널에 모여있다면, 인터페이스는 이러한 커널을 사용자가 보다 편리하게 사용할 수 있게 해준다.

- 커널은 쉘과 대비될 수 있는데, 쉘은 운영체제의 가장 바깥 부부네 위치해서 사용자 명령에 대한 처리를 담당하는 역할을 하고, 커널은 하드웨어와 관련된 내부적인 역할을 담당한다.

 

▼커널의 기능

기능 설명
프로세스 관리 프로세스 스케줄링 및 동기화 관리 담당
프로세스 생성과 제거, 시작과 정지, 메시지 전달 등의 기능 담당
기억장치 관리 프로세스에게 메모리 할당 및 회수 관리 담당
주변장치 관리 입출력 장치 스케줄링 및 전반적인 관리 담당
파일 관리 파일 관리 파일의 생성과 삭제, 변경, 유지 등의 관리 담당

 

 

(2) 운영체제의 종류

1. 윈도즈 운영체제

- MS-DOS의 멀티태스킹 기능과 GUI 환경을 제공하는 마이크로소프트사가 개발한 운영체제이다.

 

▼윈도즈 운영체제 특징

  • 그래픽 사용자 인터페이스 제공 : 키보드 없이 마우스로 아이콘이나 메뉴를 선택하여 작업을 수행하는 그래픽 기반의 인터페이스 방식
  • 선점형 멀티태스킹 방식 제공 : 동시에 여러 개의 프로그램을 실행하면서 운영체제가 각 작업의 CPU 이용 시간을 제어
  • 자동감지 기능 제공 : 하드웨어를 설치했을 때 필요한 시스템 환경을 운영체제가 자동으로 구성해주는 자동감지 기능
  • OLE : 개체를 현재 작성 중인 문서에 자유롭게 연결 또는 삽입하여 편집할 수 있게 하는 기능 제공

 

2. 유닉스 계열 운영체제

- 90% 이상 C 언어로 구현되어 있는 운영체제로 범용 다중 사용자 방식의 시분할 운영체제이다.

- 유닉스는 처음부터 다양한 시스템에 서로 인식할 수 있고, 멀티 태스킹을 지원하도록 설계되었다.

 

▼유닉스 계열 운영체제 특징

  • 대화식 운영체제 기능 : 프롬프트가 나타난 상태에서 사용자가 명령을 입력하면 시스템은 그 명령을 수행하는 사용자 명령 기반의 대화식 운영체제 기능을 제공
  • 다중 작업 기능 : 다수의 프로세스가 CPU와 같은 공용자원을 나누어 사용하여 한 번에 하나 이상의 작업을 수행하는 기능 제공
  • 다중 사용자 기능 : 여러 대의 단말이 하나의 컴퓨터에 연결되어서, 여러 사람이 동시에 시스템을 사용하여 각각의 작업을 수행할 수 있는 기능 제공
  • 이식성 제공 : 시스템 프로그램이 모듈화되어 있어서 다른 하드웨어 기종으로 쉽게 이식 가능
  • 계층적 트리 구조 파일 시스템 제공 : 계층적 트리 구조를 가짐으로써 통합적인 파일 관리가 용이

 

① 리눅스 운영체제

- 유닉스를 기반으로 개발되고, 소스 코드가 공개된 오픈 소스 기반의 운영체제이다.

- 리눅스는 데비안, 레드헷, Fedora, Ubuntu, CentOS와 같이 다양하게 출시되고 있다.

- 유닉스 계열의 운영체제로 대화식 운영체제, 다중 작업 기능, 다중 사용자 기능, 이식성, 계층적 트리 구조 파일 시스템을 갖는다.

 

② 맥 운영체제

- 애플이 유닉스를 기반으로 개발한 그래픽 사용자 인터페이스 기반의 운영체제이다.

 

 

③ 안드로이드 운영체제

- 휴대 전화를 비롯한 휴대용 장치를 위한 운영체제와 미들웨어, 사용자 인터페이스 그리고 표준 응용 프로그램을 포함하고 있는 운영체제이다.

 

▼안드로이드 특징

  • 리눅스 기반 : 안드로이드는 리눅스 커널 위에서 동작
  • 자바와 코틀린 언어 : 고수준 언어를 사용해 응용 프로그램을 작성
  • 런타임 라이브러리 : 컴파일된 바이트 코드 구동 가능
  • 안드로이드 소프트웨어 개발 키트 : 응용 프로그램을 개발하는 데 필요한 각종 도구와 API를 제공

 

(2) 운영체제 제어

 

▼ 윈도즈 운영체제의 기본 명령어

  • ATTRIB : 파일 속성을 표시하거나 바꿈
  • CALL : 한 일괄 프로그램에서 다른 일괄 프로그램을 호출
  • CD : 현재 디렉터리 이름을 보여주거나 바꿈
  • CHKDSK : 디스크를 검사하고 상태 보고서를 표시
  • CLS : 화면을 지움
  • CMD : Windows 명령 프롬프트 창을 열어줌
  • COMP : 두 개 이상의 파일을 비교
  • DISKPART : 디스크 파티션 속성을 표시하거나 구성
  • ECHO : 메시지를 표시하거나 사용 또는 사용하지 않음
  • ERASE : 하나 이상의 파일을 지움
  • EXIT : CMD.EXE 프로그램을 마침

 

(3) 리눅스/유닉스 계열의 기본 명령어

- 리눅스와 유닉스 명령어는 쉘에서 입력할 수 있다.

- 리눅스는 최상위 유저를 CLI 환경에서 #으로 표시하며 일반 유저를 $로 표시한다.

- 명령어에 대한 도움말은 --help, -h를 명령어 뒤에 붙임으로써 확인할 수 있다.

 

1. 리눅스/유닉스 운영체제의 기본 명령어

  • uname-a : 시스템의 모든 정보를 확인
  • uname-r : 운영체제의 배포버전을 출력
  • cat : 파일의 내용을 화면에 출력
  • uptime : 시스템의 가동 시간과 현재 사용자 수, 평균 부하량 등을 확인하는 명령어
  • id : 사용자의 로그인명을 출력
  • last : 시스템의 부팅부터 현재까지의 모든 사용자의 로그인과 로그아웃에 대한 정보 표시
  • who : 현재 접속 사용자 정보를 표시
  • ls : 자신이 속해있는 폴더 내에서의 파일 및 폴더들을 표시
  • pwd : print working directory의 약자, 현재 작업 중인 디렉토리의 절대 경로를 출력
  • rm : 파일 삭제
  • cp : 파일 복사
  • mv : 파일 이동
  • ps : 현재 실행되고 있는 프로세스 목록 출력
  • pmap : 프로세스 ID를 기준으로 메모리 맵 정보를 출력
  • kill : 특정 PID 프로세스 종료 명령어
  • chmod : 특정 파일 또는 디렉토리의 퍼미션 수정 명령어
  • chown : 파일이나 디렉토리의 소유자, 소유 그룹 수정 명령어
  • ifconfig : 네트워크 인터페이스를 설정하거나 확인
  • host : 도메인 명은 알고 있는데 ip 주소를 모르거나 혹은 그 반대의 경우에 사용
  • tar : 여러 개의 파일을 하나의 파일로 묶거나 풀 때 사용
  • gzip : 파일을 묶거나 풀 수는 없지만 압축을 담당하는 명령어
  • grep : 입력으로 전달된 파일의 내용에서 특정 문자열을 찾고자 할 때 사용
  • find : 특정한 파일을 찾음
  • cp : 디렉토리를 복사할 때 사용하는 명령어
  • rsync : 로컬 또는 원격에 파일과 디렉토리를 복사하고 동기화
  • df : 시스템에 마운트된 하드디스크의 남은 용량을 확인할 때 사용
  • du : 파일 사이즈를 킬로 바이트 단위로 보여줌
  • cd : 디렉토리 이동

 

2. 리눅스/유닉스 운영체제의 파일 접근 권한 관리

i-node에는 각 파일의 물리적 위치, 생성 수정 사용 날짜 등의 정보와 더불어 파일소유자 등의 파일 접근제어와 관련된 정보가 수록되며 해당 정보를 이용하여 DAC 기반 접근제어를 수행한다.

 

- Read, Write, eXcute로 파일을 읽거나, 쓰거나, 실행할 수 있는 3가지 모드로 구분한다.

- chmod 명령은 기존 파일 또는 디렉토리에 대한 접근권한을 변경할 때 사용한다.

 

ex)

chmod go-w yoom.c : yoom.c의 group, others에 w 쓰기 권한 제거

chmod a=rw yoom.c : yoom.c의 모든 사용자에 rw 권한 설정

chmod g+w, o-x, yoom.c : yoom.c의 group에 w권한을 추가하고, others에 x 권한 제거

chmod 777 yoom.c : 모든 사용자에 rwx 권한 설정

chmod 664 yoom.c : user, group에 rw 권한, others에 r 권한 설정

chmod 600 yoom.c : user에 rw 권한 설정

 

 

(3) 운영체제 핵심 기능

1. 메모리 관리 기법

기법 설명 세부 기법
반입 기법 주기억장치에 적재할 다음 프로세스의 반입 시기를 결정(When) 요구 반입 기법
예상 반입 기법
배치 기법 디스크에 있는 프로세스를 주기억장치의 어느 위치에 저장할 것인지 결정(Where) 최초 적합
최적 적합
최악 적합
할당 기법 실행해야 할 프로세스를 주기억장치에 어떤 방법으로 할당한 것인지 결정(How) 연속 할당
분산 할당
교체 기법 재배치 기법으로 주기억장치에 있는 프로세스 중 어떤 프로세스를 제거할 것인지 결정(Who) 프로세스의 Swap In/Out, FIFO, Optimal, LRU, LFU, MFU

 

① 메모리 배치 기법

㉮ 최초적합

- 프로세스가 적재될 수 있는 가용 공간 중에서 첫 번째 분할에 할당하는 방식

 

㉯ 최적적합

- 가용 공간 중에서 가장 크기가 비슷한 공간을 선택하여 프로세스를 적재하는 방식

 

㉰ 최악적합

- 프로세스의 가용 공간들 중에서 가장 큰 공간에 할당하는 방식

 

 

2. 프로세스 관리

- 하나의 프로세스는 여러 가지 이벤트에 의해 일련의 서로 구분되는 상태 변화를 겪는다.

 

▼프로세스 상태

  • 생성 상태 : 사용자에 의해 프로세스가 생성된 상태
  • 준비 상태 : CPU를 할당받을 수 있는 상태
  • 실행 상태 : 프로세스가 CPU를 할당 받아 동작 중인 상태
  • 대기 상태 : 프로세스 실행 중 입출력 처리 등으로 인해 CPU를 양도하고 입출력 처리가 완료까지 대기 리스트에서 기다리는 상태
  • 완료 상태 : 프로세스가 CPU를 할당받아 주어진 시간 내에 완전히 수행을 종료한 상태

 

① 프로세스 상태 전이

- 하나의 작업이 컴퓨터 시스템에 입력되어 완료되기까지 프로세스의 상태가 준비, 실행 및 대기 상태로 변하는 활동

 

▼프로세스 상태 전이

  • 디스패치 : 준비 상태에 있는 여러 프로세스 중 실행될 프로세스를 선정하여 CPU를 할당
  • 타이머 런 아웃 : CPU를 할당받은 프로세스는 지정된 시간이 초과되면 스케줄러에 의해 PCB 저장, CPU 반납 후 다시 준비 상태로 전이
  • 블록 : 실행 상태에 있는 프로세스가 지정된 할당시간을 초과하기 전에 입출력이나 기타 사건이 발생하면 CPU를 스스로 반납하고 입출력이 완료될 때까지 대기 상태로 전이됨
  • 웨이크 업 : 어느 순간에 입출력이 종료되면 대기 상태의 프로세스에게 입출력 종료 사실을 wait&signal 등에 의해 알려주고, 준비 상태로 전이됨

 

3. 프로세스 스케줄링

- CPU를 사용하려고 하는 프로세스들 사이의 우선순위를 관리하는 작업이다.

- 응답률 : (대기시간+서비스 시간)/서비스시간 -> HRN 스케줄링에서 사용

 

①프로세스 스케줄링 유형

*선점형 스케줄링*

- 하나의 프로세스가 CPU를 차지하고 있을 때, 우선순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU를 점유

- 장점 : 비교적 빠른 응답, 대화식 시분할 시스템에 적합

- 단점 : 높은 우선순위 프로세스들이 들어오는 경우 오버헤드 초래

- 알고리즘 : 라운드 로빈, SRT, 다단계 큐, 다단계 피드백 큐

- 활용 : 실시간 응답 환경

 

*비선점형 스케줄링*

- 한 프로세스가 CPU를 할당받으면 작업 종료 후 CPU 반환 시까지 다른 프로세스는 CPU 점유가 불가능한 스케줄링 방식

- 장점 : 응답시간 예상이 용이, 모든 프로세스에 대한 요구를 공정하게 처리

- 단점 : 짧은 작업을 수행하는 프로세스가 긴 작업 종료 시까지 대기

- 알고리즘 : 우선순위, 기한부, FCFS, HRN, SJF

- 활용 : 처리시간 편차가 적은 프로세스 환경

 

 

4. 프로세스 관리-교착상태

①교착상태 개념

- 교착상태는 다중프로세싱 환경에서 두 개 이상의 프로세스가 특정 자원할당을 무한정 대기하는 상태이다. 

 

▼교착상태 발생 조건

발생 조건 설명
상호 배제 프로세스가 자원을 배타적으로 점유하여 다른 프로세스가 그 자원을 사용할 수 없는 상태
점유와 대기 한 프로세스가 자원을 점유하고 있으면서 또 다른 자원을 요청하여 대기하고 있는 상태
비선점 한 프로세스가 점유한 자원에 대해 다른 프로세스가 선점할 수 없고, 오직 점유한 프로세스만이 해제 가능한 상태
환형 대기 두 개 이상의 프로세스 간 자원의 점유와 대기가 하나의 원형을 구성한 형태

 

② 교착상태 해결방법

해결 방법 설명 세부 기법
예방 상호 배제를 제외한 나머지 교착상태 발생 조건을 위배하는 방안   점유 자원 해제 후 새 자원 요청
회피 안전한 상태를 유지할 수 있는 요구만 수락 은행가 알고리즘, Wound-wait, wait-die
발견 시스템의 상태를 감시 알고리즘 통해 교착 상태 검사 자원할당 그래프, Wait for Graph
복구 교착상태가 없어질 때까지 프로세스를 순차적으로 kill하여 제거, 희생자 선택해야 하고 기아 상태 발생 프로세스 kill, 자원선점

 

 

(4) 가상화, 클라우드

1. 가상화 개념

- 가상화는 물리적인 리소스들을 사용자에게 하나로 보이게 하거나, 하나의 물리적인 리소스를 여러 개로 보이게 하는 기술이다.

- 대부분의 서버는 용량의 20% 정도만을 사용하는데, 가상화를 통해 서버의 가동률을 60~70% 이상으로 올릴 수 있다.

 

▼가상화의 종류

  • 플랫폼 가상화 : 하드웨어 플랫폼 위에서 실행되는 호스트 프로그램이 게스트 프로그램을 만들어 마치 독립된 환경을 만들어 낸 것처럼 보여주는 기법
  • 리소스 가상화 : 게스트 소프트웨어 위에서 사용자는 독립된 하드웨어에서 소프트웨어가 실행되는 것처럼 활용하는 기법

 

▼가상화 기술요소

기술요소 설명
컴퓨팅 가상화 물리적으로 컴퓨터 리소스를 가상화하여 논리적 단위로 리소스를 활용할 수 있도록 하는 기술
서버 가상화를 통해 하나의 시스템에서 1개 이상의 운영체제를 동시에 가동시킬 수 있으므로, 서버 이용률이 크게 향상
예 : 하이퍼바이저
스토리지 가상화 스토리지와 서버 사이에 소프트웨어/하드웨어 계층을 추가하여 스토리지를 논리적으로 제어 및 활용할 수 있도록 하는 기술
예 : 분산 파일 시스템
I/O 가상화 서버와  I/O 디바이스 사이에 위치하는 미들웨어 계층, 서버의 I/O 자원을 물리적으로 분리하고 케이블과 스위치 구성을 단순화하여 효율적인 연결을 지원하는 기술
예 : 가상 네트워크 인터페이스 카드
컨테이너 컨테이너화된 애플리케이션들이 단일 운영체제상에서 실행되도록 해주는 기술
예 : 도커
분산처리 기술 여러 대의 컴퓨터 계산 및 저장능력을 이용하여 커다란 계산문제나 대용량의 데이터를 처리하고 저장하는 기술
네트워크 가상화 기술 물리적으로 떨어져 있는 다양한 장비들을 연결하기 위한 수단으로 중계장치의 가상화를 통한 가상 네트워크를 지원하는 기술
예 : SDN, NFV

 

2. 클라우드 컴퓨팅

- 인터넷을 통해 가상화된 컴퓨터시스템 리소스를 제공하고, 정보를 자신의 컴퓨터가 아닌 클라우드에 연결된 다른 컴퓨터로 처리하는 기술이다.

- 구성 가능한 컴퓨팅 자원에 대해 어디서나 접근할 수 있다.

 

▼ 클라우드 서비스 유형

유형 설명
     인프라형 서비스
            (IaaS)                     
서버, 스토리지 같은 시스템 자원을 클라우드로 제공하는 서비스
플랫폼형 서비스
(PaaS)
인프라를 생성, 관리 하는 복잡함 없이 애플리케이션을 개발, 실행, 관리할 수 있게 하는 플랫폼을 제공하는 서비스
소프트웨어형 서비스
(SaaS)
소프트웨어 및 관련 데이터는 중앙에 호스팅되고 사용자는 웹 브라우저 등의 클라이언트를 통해 접속하여 소프트웨어를 서비스 형태로 이용하는 서비스