- 운영체제(OS)란?
시스템 하드웨어를 관리할 뿐 아니라 응용 소프트웨어를 실행하기 위해 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어
- 운영체제의 역할
- User Interface (편리성)
- CUI (Character user interface)
- GUI (Graphical User interface)
- EUCI (End-User Comfortalbe Interface)
- Resource management (효율성)
- HW resource (processor, memory, I/O devices, Etc.)
- SW resource (file, application, massage, signal, Etc.)
- Process and Thread management
- System management (시스템 보호)
- 컴퓨터 시스템의 구성
- 운영체제의 구분
-
동시 사용자 수에 따라,
- Single-user system : 한 명의 사용자만 시스템 사용 가능
- 한 명의 사용자가 모든 시스템 자원 독점
- 개인용 장비(PC, mobile) 등에 사용
- 자원관리 및 시스템 보호 방식이 간단
- Multi-user system : 동시에 여러 사용자들이 시스템 사용
- 각종 시스템 자원들에 대한 소유 권한 관리가 필요
- 서버, 클러스터(cluster) 장비 등에 사용
- 기본적으로 Multi-tasking 기능 필요
- OS의 기능 및 구조가 복잡
-
동시 실행 프로세스 수에 따라,
- Single-tasking system : 시스템 내에 하나의 작업(프로세스) 존재)
- 운영체제의 구조가 간단
- Multi-tasking system : 동시에 여러 작업(프로세스)의 수행 가능
- 운영체제의 기능 및 구조가 복잡
- ex) Unix/Linux, Windows 등
-
작업 수행 방식 (사용자가 느끼는 사용 환경)에 따라,
-
Batch processing system (일괄처리 시스템)
- 모든 시스템을 중앙에서 관리 및 운영 (시스템 지향적)
- 사용자의 요청 작업을 일정 시간 모아 두었다가 한 번에 처리
- 많은 사용자가 시스템 자원을 공유하여 처리 효율을 향상시키지만,
- 같은 유형의 작업들이 모이기를 기다려야 하므로 생산성이 저하되고,
- 약 6시간이라는 긴 응답시간이 있다.
-
Time-sharing system (시분할 시스템)
- 여러 사용자가 지원을 동시에 사용 (사용자 지향적)
- OS가 파일 시스템 및 가상 메모리 관리
- 대화형 시스템, 단말기 사용
- 짧은 응답시간(약 5초)과 프로세서의 유휴 시간을 감소시켜 생산성을 향상시키지만,
- 통신 비용이 증가하고, 개인 사용자 체감 속도가 저하
- 동시 사용자 수 상승 > 시스템 부하 > 느려짐
-
Distributed processing system (분산처리 시스템)
- 네트워크 기반으로 구축된 병렬처리 시스템 (Loosely-coupled system)
- 물리적인 분산, 통신망을 이용한 상호 연결
- 각각 운영체제를 탑재한 다수의 범용 시스템으로 구성
- 사용자는 분산운영체제를 통해 하나의 프로그램, 자원처럼 사용 가능 (은폐성, transparency)
- 자원 공유를 통한 높은 성능과, 높은 신뢰성, 높은 확장성을 보장하지만, 구축 및 관리가 어렵다.
- ex) 클러스터 시스템, 클라이언트 시스템, P2P 등
-
Real-time system (실시간 시스템)
- 작업 처리에 제한 시간(deaeline)을 갖는 시스템
- 제한 시간 내에 서비스를 제공하는 것이 자원 활용 효율보다 중요
- 작업의 종류
- Hard real-time task
- 시간 제약을 지키지 못하는 경우 시스템에 치명적 영향 (발전소 제어, 무기 제어 등)
- Soft real-time task : 동영상 재생 등
- Non real-time task
-
그 외, Personal Computing(개인용 컴퓨터, 현재 방식), Parallel Processing System 등이 존재
- 프로그램 vs. 프로세스
1. 프로그램
- 코드와 데이터가 합쳐진 것으로, 디스크 상에 목적파일(*.o) 이나 주소공간에 세그먼트로 존재할 수 있음
- 항상 어떤 프로세스의 컨텍스트 내에서 돌아감
2. 프로세스
- 실행 중에 있는 프로그램
- 프로그램 카운터, 스택, 상태 등을 포함하는 PCB (프로세스 제어 블록) 를 통해 운영 체제 활동을 처리
- 운영체제의 구조
- 운영체제의 또다른 구조
-
단일 구조
- 장점:
- 커널 내 모듈간 직접 통신 -> 효율적 자원 관리 및 사용
- 단점:
- 커널의 최대화
- 오류 및 버그, 추가 기능 구현 등 유지보수가 어려움
- 동일 메모리에 모든 기능이 있어, 한 모듈의 문제가 전체 시스템에 영향 (ex. 악성 코드 등)
-
계층 구조
- 장점:
- 모듈화 -> 계층간 검증 및 수정 용의
- 설계 및 구현의 단순화
- 단점:
- 단일구조 대비 성능 저하
- 원하는 기능 수행을 위해 여러 계층을 거쳐야 함
-
마이크로 커널 구조
- 커널의 크기 최소화
- 필수 기능만 포함
- 기타 기능은 사용자 영역에서 수행
- 운영체제의 기능
- 프로세스 관리
- 프로세스 (Process)
- 커널에 등록된 실행 단위 (실행 중인 프로그램)
- 사용자 요청/프로그램의 수행 주체(entity)
- OS의 프로세스 관리 기능
- 생성/식제, 상태 관리
- 자원 할당
- 프로세스 간 통신 및 동기화(synchronization)
- 교착상태(deadlock) 해결
- 프로세스 정보 관리
- PCB (Process Control Block)
- 프로세서 관리
- 중앙 처리 장치 (CPU)
- 프로그램을 실행하는 핵심 자원
- 프로세스 스케줄링(Scheculing)
- 시스템 내의 프로세스 처리 순서 결정
- 프로세서 할당 관리
- 프로세스들에 대한 프로세서 할당
- 메모리 관리
- 주기억장치
- 작업을 위한 프로그램 및 데이터를 올려 놓는 공간
- Multi-user, Multi-tasking 시스템
- 프로세스에 대한 메모리 할당 및 회수
- 메모리 여유 공간 관리
- 각 프로세스의 할당 메모리 영역 접근 보호
- 메모리 할당 방법 (scheme)
- 전체 적재
-> 장점 : 구현이 간단 / 단점 : 제한적 공간
- 일부 적재 (Virtual memory concept)
-> 프로그램 및 데이터의 일부만 적재
-> 장점 : 메모리의 효율적 활용 / 단점 : 보조기억 장치 접근 필요
- 파일 관리
- 파일 : 논리적 데이터 저장 단위
- 사용자 및 시스템의 파일 관리
- 디렉토리 구조 지원
- 파일 관리 기능
- 파일 및 디렉토리 생성/삭제
- 파일 접근 및 조작
- 파일을 물리적 저장 공간으로 사상(mapping)
- 백업 등
- 입출력 관리
- 입출력(I/O) 과정
- OS를 반드시 거쳐야 함
- 보조 기억 장치 및 기타 주변장치 관리 등
- Disk, Networking, Security and Protection system 등
- 컴퓨터 하드웨어
-
프로세서 (Processor)
- CPU
- 그래픽카드 (GPU)
- 응용 전용 처리장치 등
-
메모리 (Memory)
- 주 기억장치
- 보조 기억장치 등
-
주변장치
- 키보드/마우스, 모니터, 프린터, 네트워크 모뎀 등
프로세서 : 컴퓨터의 두뇌(중앙처리장치)
- 연산 수행
- 컴퓨터 모든 장치의 동작 제어
레지스터 (Register)
- 프로세서 내부에 있는 메모리
- 프로세서가 사용할 데이터 저장
- 컴퓨터에서 가장 빠른 메모리
레지스터의 종류
- 용도에 따른 분류
- 사용자가 정보 변경 가능 여부에 따른 분류
- 저장하는 정보의 종류에 따른 분류
- 데이터 레지스터, 주소 레지스터, 상태 레지스터
* 사용자 가시 레지스터
* 사용자 불가시 레지스터
메모리 (Memory)
- 데이터를 저장하는 장치 (기억장치)
- 프로그램(OS, 사용자, SW 등), 사용자 데이터 등
메모리의 종류
- 주기억장치(Main memory)
- 프로세서가 수행할 프로그램과 데이터 저장
- DRAM을 주로 사용 -> 용량이 크고 가격이 저렴
- 디스크 입출력 병목현상(I/O bottleneck) 1 해소
- 캐시 (Cache)
- 프로세서 내부에 있는 메모리 (L1, L2 캐시 등)
- 속도가 빠르고, 가격이 비쌈
- 메인 메모리의 입출력 병목현상 해소
- 보조기억 장치 (Auxiliary / Secondary memory, storage)
- 프로그램과 데이터를 저장
- 프로세서가 직접 전근할 수 없음 (주변장치)
- 주기억장치를 거쳐서 접근
- (프로그램/데이터>주기억장치)인 경우 : 가상 메모리
- 용량이 크고 가격이 저렴
캐시의 동작
- 캐시 히트(Cache hit) : 필요한 데이터 블록이 캐시에 존재
- 캐시 미스(Cache miss) : 필요한 데이터 블록이 없는 경우
지역성 (Locality)
- 공간적 지역성 (Spatial locality)
-> 참조한 주소와 인접한 주소를 참조하는 특성
- 시간적 지역성 (Temporal locality)
-> 한 번 참조한 주소를 곧 다시 참조하는 특성
- 지역성은 캐시 적중률(cache hit ratio)과 밀접
- 알고리즘 성능 향상을 위한 중요한 요소 중 하나
- 시스템 버스
- 하드웨어들이 데이터 및 신호를 주고 받는 물리적인 통로
- 데이터 버스의 종류
- 데이터 버스
- 프로세서와 메인 메모리, 주변장치 사이에서 데이터를 전송
데이터 버스를 구성하는 배선 수는 프로세서가 한 번에 전송할 수 있는 비트 수를 결정하는데, 이를 워드라고 함
- 주소 버스
- 프로세서가 시스템의 구성 요소를 식별하는 주소 정보를 전송
주소 버스를 구성하는 배선 수는 프로세서와 접속할 수 있는 메인 메모리의 최대 용량을 결정
- 제어 버스
- 프로세서가 시스템의 구성 요소를 제어하는 데 사용
제어 신호로 연산장치의 연상 종류와 메인 메모리의 읽기나 쓰기 동작을 결정
1. 병목현상 : 전체 시스템의 성능이나 용량이 하나의 구성 요소로 인해 제한을 받는 현상