운영체제
운영체제에 대하여
chan4
2023. 4. 14. 20:37
해당 블로그의 내용은 학교에서 배운 내용을 개인적으로 정리한 내용이므로, 잘못된 부분이 있을 수도 있습니다.
운영체제의 역할
- 편리성
- CUI / GUI / EUCI (Interfaces)
- 효율성
- HW / SW
- 프로세서와 스레드 관리
- 시스템 보호
운영체제의 구분
- 동시 사용자 수
- 동시 실행 프로세스 수
- 작업 수행 방식 (사용자가 느끼는 사용 환경)
동시 사용자 수
단일 사용자
- 한 명의 사용자만 시스템 사용 가능. 시스템 자원 독점
- 개인용 장비(PC, mobile) 등에 사용 ex) windows, android, MS-DOS
다중 사용자
- 동시에 여러 사용자들이 시스템 사용
- 각종 시스템 자원들에 대한 소유 권한 관리 필요
- 멀티태스킹 필요
- OS 복잡
- 서버, 클러스터(Cluster) 장비 등에 사용 ex) Unix, Linux, Windows server etc..
동시 실행 프로세스 수
단일작업 (Single-tasking)
- 시스템 내 하나의 작업(프로세스)만 존재
- 하나의 프로그램 실행 마친 후, 다른 프로그램 실행
- 운영체제 구조 간단
- ex) MS-DOS
다중작업 (Multi-tasking)
- 동시에 여러 작업 수행 가능
- 운영체제 구조 복잡
- ex) Unix, Linux, Windows
작업 수행 방식
순차 처리, 운영체제 개념 x
- 사용자가 기계어로 모든 프로그램 작성
- 컴퓨터에 필요한 모든 작업 프로그램에 포함
- 실행하는 작업 별 순차 처리
- 각각의 작업에 대한 준비 시간이 소요
일괄 처리 시스템 (Batch Systems)
- 모든 시스템을 중앙에서 관리 및 운영
- 사용자의 요청을 일정 시간 모아두었다가 한번에 처리
- 시스템 지향적 (System-oriented)
- 장점
- 많은 사용자가 시스템 자원을 공유
- 처리 효율 (throughput) 향상
- 단점
- 생산성 저하
- 같은 유형의 작업들이 모이기를 기다려야 함
- 긴 응답시간
- 약 6시간 (작업 제출에서 결과 출력까지의 시간)
- 생산성 저하
시분할 시스템 (Time Sharing systems)
- 여러 사용자가 자원들 동시에 사용
- 사용자 지향적, 단말기 사용
- 대화형 시스템
- 제한된 CPU 사용시간을 쪼개어 모든 작업이 동시에 진행되는 것처럼 작업 처리
- 장점
- 응답시간 단축 : 약 5초
- 생산성 향상
- 프로세서 유휴(노는) 시간 감소
- 단점
- 통신 비용 증가
- 통신선 비용, 보안 문제 등
- 개인 사용자 체감 속도 저하 (개인관점)
- 통신 비용 증가
개인 컴퓨팅 시스템 (Personal Computing)
- 개인이 시스템 전체 독점
- CPU 활용률이 고려의 대상이 아님
- OS 단순
- 빠른 응답시간
- 성능 낮음
병렬처리 시스템 (Parallel processing system)
- 단일 시스템 내에서 둘 이상의 프로세서 사용 (지원)
- 메모리 등의 자원 공유
- 사용 목적
- 성능 향상
- 신뢰성 향상 (하나가 고장나도 /정상 동작 가능)
분산처리 시스템 (Distributed processing systems)
- 네트워크 기반으로 구축된 병철처리 시스템
- Loosely-coupled system
- 물리적인 분산, 통신망 이용한 상호 연결
- 각각 운영체제 탑재한 다수의 범용 시스템으로 구성
- 사용자는 분산운영체제를 통해 하나의 프로그램, 자원처럼 사용 가능 (은폐성)
- 각 구성 요소들간의 독립성 유지, 공동작업 가능
- 장점
- 자원 공유를 통한 높은 성능
- 고신뢰성, 높은 확장성
- 단점
- 구축 및 관리가 어려움
실시간 시스템 (Real-time systems)
- 작업 처리에 제한 시간을 갖는 시스템
- Hard real-time task
- 발전소 제어, 무기 제어 등
- Soft real-time task
- 동영상 재생 등
- Non real-time task
운영체제의 구조
커널 (Kernel, 알멩이)
기본적으로 하드디스크에 있는 프로그램을 실행시키면, 해당 프로그램은 메모리에 할당되어 작업을 수행하게 된다.
운영체제도 결국 프로그램이므로, 컴퓨터에 전원을 공급하고 시스템이 켜짐과 동시에 운영체제라는 프로그램은 메모리에 할당되어야 한다. 하지만 운영체제처럼 규모가 큰 프로그램이 모두 메모리에 올라간다면 메모리 공간의 낭비가 심하다.
따라서 운영체제 중 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려놓고, 그렇지 않은 부분은 필요할 때 메모리에 할당하여 사용하게 된다.
여기서 메모리에 상주하는 운영체제의 부분을 커널이라 한다.
- OS의 핵심 부분 (메모리 상주)
- 가장 빈번하게 사용되는 기능들 담당(시스템 관리 등)
- 자원 관리 (HW/SW 자원 관리)
유틸리티 (Utility)
- 비상주 프로그램
- UI등 서비스 프로그램
단일 구조
- 운영체제의 모든 기능을 커널과 동일한 메모리 안에 쑤셔넣어 시스템 호출만으로 사용 가능
- 장점
- 커널 내 모듈간 직접 통신
- 효율적 자원 관리 및 사용
- 커널 내 모듈간 직접 통신
- 단점
- 커널의 거대화
- 오류 및 버그, 유지보수가 어려움
- 동일 메모리에 모든기능 있음
- 한 모듈 문제가 전체 시스템 영향
- 커널의 거대화
계층 구조
- 비슷한 기능을 수행하는 요소들을 그룹화하여 계층화시킴
- 장점
- 모듈화
- 설계 및 구현의 단순화
- 단점
- 단일구조 대비 성능 저하
- 원하는 기능 수행을 위해 여러 계층을 거쳐야 함
- 단일구조 대비 성능 저하
마이크로 커널 구조
- 커널의 크기 최소화
- 필수 기능만 커널에 존재하고, 나머지는 사용자 영역으로 옮김
- 서버 오류가 다른 서버와 커널에 치명적인 영향을 주지 않음!
- 모듈 간 통신이 많아 성능 떨어짐
- 속도 느림
운영체제의 기능
- 프로세스(Process) 관리
- 프로세서(Processor) 관리
- 메모리 관리
- 파일 관리
- 입출력 관리
- 보조 기억 장치 & 기타 주변장치 관리
프로세스(Process)와 프로세서(Processor)의 차이?
- 프로세스는 말 그대로 절차(과정)
- 특정 목적을 수행하기 위해 나열된 작업의 목록
- 메모리에 적재되어 프로세서의 의해 실행중인 또는 실행 대기중인 프로그램
- 프로세스는 그냥 메모리에 불과함. 프로세서가 실행시켜줘야 함
프로세스(Process) 관리
프로세스(Process)
- 커널에 등록된 실행 단위 (실행 중인 프로그램)
- 사용자 요청/프로그램의 수행 주체
OS의 프로세스 관리 기능
- 생성/삭제, 상태관리
- 자원 할당
- 프로세스 간 통신 및 동기화 (sync)
- 교착상태(Deadlock) 해결
- 프로세스 정보 관리
- PCB (Process Control Bloc)
프로세서(Processor) 관리
- 중앙처리장치 (CPU)
- 프로그램 실행하는 핵심 자원
- 프로세스 스케줄링
- 시스템 내의 프로세스 처리 순서 결정
- 프로세서 할당 관리
- 프로세스들에 대한 프로세서 할당, 한 번에 하나의 프로세스만 사용 가능
메모리 관리 (Memory management)
주기억장치
- 작업을 위한 프로그램 및 데이터를 올려 놓는 작업 테이블(공간)
Multi-user, Multi-tasking 시스템
- 프로세스에 대한 메모리 할당 및 회수
- 메모리 여유 공간 관리
- 각 프로세스의 할당 메모리 영역 접근 보호
메모리 할당 방법 (scheme)
- 전체 적재
- 구현이 간단하지만 공간이 제한됨
- 일부 적재
- 효율적인 메모리 사용이 가능하지만, 보조기억장치 접근 필요
파일 관리 (File management)
- 파일 (File)
- 논리적 데이터 저장 단위
- 사용자 및 시스템의 파일 관리
- 디렉토리 구조 지원
- 파일 관리 기능
- 파일/디렉토리 생성/삭제
- 파일 접근
- 파일을 물리적 저장 공간으로 매핑(사상)
- 백업
입출력 관리 (I/O management)
- OS를 반드시 거쳐야 함
- 실행중인 프로세스 – 운영체제(OS) - 입출력 처리장치