운영체제 공룡책: 1장 Overview
1. 운영체제란?
- 컴퓨터가 하드웨어를 관리하는 프로그램
- 응용프로그램의 토대를 제공해주는 프로그램
- 컴퓨터의 사용자와 컴퓨터 하드웨어 사이에 중간 매체 역할을 해주는 프로그램
- 항상 수행되고 있는 유일한 프로그램만 운영체제이다. 다른 말로 커널(kernel)이라고 한다.
1.1 운영체제의 기능 (What Operating Systems Do)
컴퓨터 시스템의 구성요소
- 하드웨어: 중앙 처리 장치(CPU), 메모리, 입출력(I/O) 장치와 같은 하드웨어는 시스템의 기본 컴퓨팅 리소스를 제공
- 운영체제: 하드웨어를 제어하고 다양한 사용자를 위해 다양한 응용 프로그램 간의 사용을 조정
- 응용프로그램: 워드 프로세서, 스프레드시트, 컴파일러, 웹 브라우저와 같은 응용 프로그램은 이러한 리소스가 사용자의 컴퓨팅 문제를 해결하는 데 사용되는 방식을 정의
- 사용자
- 운영 체제는 컴퓨터 시스템 운영에서 이러한 리소스를 적절히 사용할 수 있는 수단을 제공
- 운영 체제는 정부와 유사, 정부처럼 그 자체로는 유용한 기능을 수행하지 않는다. 다른 프로그램이 유용한 작업을 수행할 수 있는 환경을 제공한다.
1.1.1 사용자 관점
컴퓨터의 용도에 따라 운영체제의 설계 방향이 결정된다.
- 개인용 컴퓨터
- 미니컴퓨터
- 워크스테이션
- 휴대용 컴퓨터 등
1.1.2 시스템 관점
자원 할당자
- 컴퓨터 자원: CPU 시간, 메모리 공간, 저장 공간, I/O 장치
제어 프로그램
- 사용자 프로그램의 실행을 관리하여 오류 및 컴퓨터의 부적절한 사용을 방지. 특히 I/O 장치의 작동 및 제어에 중점을 둔다.
1.1.3 운영체제의 목표
운영체제의 목표
- 사용자에게 편리성 제공
- 컴퓨터 시스템의 효율적인 운영
운영체제의 목적
- 사용자에게 프로그램을 효율적이고 편리하게 실행할 수 있는 환경을 제공
1.2 컴퓨터 시스템 구성 (Computer - System Organization)
현대 범용 컴퓨터 시스템은 하나 이상의 CPU와 여러 장치 컨트롤러로 구성되며, 이들은 공통 버스를 통해 연결되어 구성 요소 간 및 공유 메모리 간의 접근을 제공합니다
1.2.1 인터럽트 (Interrupts)
컨트롤러(Controller)는 인터럽트(Interrupts)를 통해 장치 드라이버에 작업이 완료되었음을 알린다.
➡️하드웨어는 일반적으로 시스템 버스를 통해 CPU에 신호를 보내 인터럽트를 발생시킨다.
➡️인터럽트(interrupts)는 하드웨어가 CPU에게 전달하는 '신호(Signal)'이다.
CPU가 인터럽트될 때, CPU는 현재 수행 중인 작업을 중단하고 즉시 고정된 위치로 실행을 전환한다. 이 고정 위치에는 인터럽트의 서비스 루틴이 위치한 시작 주소가 있다. 인터럽트 서비스 루틴이 실행되고 완료되면, CPU는 중단된 작업을 다시 시작한다.
1.2.1.2 구현 (Implementation)
인터럽트 구동 I/O 사이클
- CPU 하드웨어에는 인터럽트 요청선(interrupt-request line)이라는 선이 있으며, CPU는 매 명령을 실행한 후 이 선을 감지한다.
- CPU가 컨트롤러가 인터럽트 요청선에 신호를 보냈음을 감지하면, 인터럽트 번호를 읽고, 이 인터럽트 번호를 인터럽트 벡터에서 인덱스로 사용하여 인터럽트 처리 루틴으로 점프한다.
- 그런 다음 해당 인덱스에 연결된 주소에서 실행을 시작한다.
- 인터럽트 핸들러는 작업 중 변경될 상태를 저장하고, 인터럽트 원인을 파악하여 필요한 처리를 수행한 후, 상태를 복원하고 인터럽트에서 복귀 명령을 실행하여 CPU를 인터럽트 이전의 실행 상태로 되돌다.
- 우리는 장치 컨트롤러가 인터럽트 요청선에 신호를 보냄으로써 인터럽트를 발생시켰다고 하며, CPU는 이 인터럽트를 감지하고 인터럽트 핸들러로 전달하며, 핸들러는 장치를 서비스하여 인터럽트를 제거한다고 말한다.
1.2.2 저장 장치 구조 (Storage Structure)
메모리 유형 및 기능
- 주메모리(RAM): 실행을 위해 프로그램을 로드하는 재기록이 가능한 기본 휘발성 저장소
- ROM(EEPROM) 및 펌웨어: 부트스트랩 프로그램 및 하드웨어 정보 저장과 같은 비휘발성 저장 장치에 사용되지만 RAM보다 속도가 느리고 업데이트 빈도도 낮다.
데이터 액세스 및 저장
- CPU는 로드/저장 명령을 통해 메모리와 상호 작용한다. 데이터는 처리를 위해 메모리에서 레지스터로 로드되고 필요에 따라 다시 저장된다.
- 메모리 장치는 주소만 볼 수 있으며 생성 방법이나 목적(지침 또는 데이터)을 인식하지 못한다.
스토리지 계층 구조
- RAM의 변동성과 제한된 크기로 인해 보조 저장소(예: HDD 및 SSD)는 데이터와 프로그램을 장기간 보관한다.
- 스토리지 계층에는 레지스터, 주 메모리, 보조 스토리지 및 3차 스토리지(예: 백업용 테이프)가 포함되며 속도, 용량 및 비용의 균형이 유지된다.
휘발성 및 비휘발성 스토리지
- 휘발성 저장소: 전원이 꺼지면(RAM) 데이터가 손실된다.
- 비휘발성 스토리지(NVS): 전원이 꺼져도 데이터를 유지한다(예: SSD, HDD).
- SSD 및 플래시 메모리와 같은 전기 스토리지(NVM)는 빠르고 비용이 많이 드는 반면, 기계 스토리지(예: HDD, 광 디스크)는 느리지만 가격이 더 저렴하다.
효율성 및 최적화
- 캐시 메모리는 빠르고 값비싼 메모리와 느리지만 저렴한 스토리지 간의 속도 격차를 해소하여 성능을 향상시킨다.
- 스토리지 시스템을 설계하려면 중요한 작업에 최대한 CPU에 가까운 더 빠르고 작은 메모리를 사용하여 성능, 비용, 스토리지 요구 사항의 균형을 맞춰야 한다.
1.2.3 입출력 구조 (I/O Structure)
운영 체제의 I/O 관리
- 운영 체제의 상당 부분은 시스템 안정성과 성능에 필수적인 I/O(입력/출력) 관리에 중점을 두고 있다.
- 범용 시스템의 장치는 공유 버스를 통해 통신하며, 인터럽트 구동 I/O는 소규모 데이터 전송에 적합하다.
직접 메모리 액세스(Direct Memory Access)
- DMA는 NVS(Non-Volatile Storage) I/O와 같은 대용량 데이터 블록을 전송할 때 오버헤드를 줄이기 위해 사용된다.
- 각 데이터 바이트 전송에 CPU가 관여하는 대신 DMA를 사용하면 장치 컨트롤러가 전체 데이터 블록을 메모리에서 직접 이동할 수 있다.
- 전체 블록이 전송된 후에는 하나의 인터럽트만 생성되어 전송 중에 다른 작업을 위해 CPU를 확보한다.
1.3 컴퓨터 시스템 구조 (Computer System Architecture)
단일-처리기 시스템 (Single-Processor Systems)
- 단일 프로세서 시스템은 명령을 실행하고 데이터를 관리하는 단일 처리 코어를 갖춘 하나의 범용 CPU로 구성된다.
- 특수 목적 프로세서는 디스크 스케줄링이나 키보드 입력과 같은 작업을 지원할 수 있지만 시스템을 다중 프로세서로 변경하지는 않는다.
다중-처리기 시스템(Multi-Processor Systems)
- 처리량과 속도를 높이기 위해 두 개 이상의 프로세서가 포함
클러스터형 시스템(Clustered Systems)
- 다중 노드 (Multiple Nodes): 클러스터는 일반적으로 자체 CPU, 메모리 및 스토리지를 갖춘 여러 개의 연결된 컴퓨터(노드)로 구성된다.
- 공유 리소스 (Shared Resources): 이러한 노드는 클러스터 유형에 따라 메모리, 스토리지 등의 리소스를 공유하거나 자체 로컬 리소스를 가질 수 있다.
- 고가용성 (High Availability): 클러스터는 종종 중복성을 제공하여 한 노드에 장애가 발생하면 다른 노드가 이를 대신할 수 있도록 보장하여 시스템 안정성을 향상시키는 데 사용된다.
- 로드 밸런싱 (Load Balancing): 클러스터형 시스템은 여러 노드에 작업이나 작업 부하를 분산하여 성능을 향상하고 단일 노드의 과부하를 방지할 수 있다.
- 확장성 (Scalability): 새로운 노드를 클러스터에 추가하여 용량을 늘릴 수 있으므로 수요 증가에 따라 확장성이 향상된다.
1.4 운영체제의 구조 (Operating-System Structure)
- 부트스트랩핑 (Bootstrapping): 컴퓨터가 시작되면 시스템을 초기화하고 OS 커널을 메모리에 로드하는 부트스트랩 프로그램(종종 펌웨어에 저장됨)이라는 간단한 초기 프로그램을 실행한다.
- 운영 체제 커널 (Operating System Kernel): 로드 후 커널은 시스템 리소스를 관리하고 핵심 서비스를 제공합니다. 시스템이 작동하는 동안 계속 실행된다.
- 시스템 데몬 (System Daemons): 커널이 실행되면 백그라운드에서 작업을 수행하기 위해 시스템 프로그램(데몬)을 로드합니다. 예를 들어 Linux에서는 systemd가 이러한 데몬 중 다수를 시작한다.
- 유휴 상태 (Idle State): 주의가 필요한 프로세스나 이벤트가 없으면 OS는 중단을 조용히 기다린다.
- 인터럽트 및 트랩 (Interrupts and Traps): 주의가 필요한 이벤트는 하드웨어 인터럽트 및 트랩을 포함하여 인터럽트에 의해 신호된다. 트랩은 OS에 특정 작업을 수행하도록 요청하는 오류나 시스템 호출로 인해 소프트웨어에서 생성된다.
1.4.1 멀티프로그래밍과 멀티태스킹 (Multiprogramming and Multitasking)
- 다중 프로그래밍: 운영 체제는 여러 프로세스를 메모리에 동시에 유지하여 CPU가 항상 점유되도록 한다. 한 프로세스가 기다려야 할 때(예: I/O) CPU는 다른 프로세스로 전환한다. 이는 마치 변호사가 여러 사건을 동시에 처리하는 것처럼 CPU 활용도를 높이고 유휴 시간을 방지한다.
- 멀티태스킹: CPU가 프로세스 간에 빠르게 전환하여 빠른 응답 시간을 제공하는 멀티프로그래밍의 한 형태이다. 이는 I/O 작업(예: 사용자 입력)에 시간이 걸릴 수 있는 대화형 시스템에서 특히 중요하다. 운영 체제는 이 시간 동안 CPU가 유휴 상태로 유지되지 않도록 한다.
- 메모리 관리: 여러 프로세스를 실행하려면 가상 메모리와 같은 메모리 관리 기술이 필요하다. 이를 통해 사용 가능한 실제 메모리보다 큰 경우에도 프로세스를 실행할 수 있다. 가상 메모리는 메모리를 추상화하여 프로그래머를 메모리 제한으로부터 해방시킨다.
- CPU 스케줄링: 운영 체제는 여러 프로세스가 준비되면 다음에 실행할 프로세스를 선택해야 한다. 이는 CPU 스케줄링을 통해 관리된다.
- 파일 시스템 및 리소스 관리: OS는 보조 스토리지 관리를 위한 파일 시스템을 제공하고 리소스가 부적절한 사용되지 않도록 보호해야 한다. 또한 교착 상태와 같은 문제를 방지하기 위해 프로세스 간의 적절한 동기화 및 통신을 보장한다.
1.5 자원 관리 (Resource Management)
1.5.1 프로세스 관리(Process Management)
- 프로세스는 실행 중인 프로그램의 인스턴스
- 프로세스에는 작업을 수행하기 위해 CPU 시간, 메모리, 파일, I/O 장치 등 다양한 리소스가 필요하다.
- 프로세스는 능동적인 개체인 반면 프로그램은 수동적 개체이다.
- 프로세스는 시스템 프로세스(시스템 수준 코드를 실행)와 사용자 프로세스(사용자 수준 코드를 실행)로 구분된다.
- 프로세스는 단일 CPU 코어에서 동시에(멀티플렉싱을 통해) 실행되거나 여러 코어에서 병렬로 실행될 수 있다.
프로세스 관리와 관련된 운영체제의 임무
- 사용자와 시스템 프로세스의 생성과 제거
- 프로세스의 중지와 재개
- 프로세스 동기화
- 프로세스 간 통신
- 교착상태(Deadlock) 처리
1.5.2 주기억장치 관리 (Memory Management)
주기억장치 관리와 관련된 운영체제의 임무
- 기억 공간의 사용 현황 관리
- 적재할 프로세스 선택
- 기억 공간의 할당과 회수
1.5.3 파일 관리 (File-System Management)
- 파일: 생성자에 의해 정의된 관련 정보의 모음
- 운영체제는 다양한 저장 매체에 대한 균일한 논리적 뷰를 제공
파일 관리와 관련된 운영체제의 임무
- 파일의 생성과 삭제
- 폴더의 생성과 삭제
- 파일과 폴더를 조작하기 위한 기초 연산 제공
- 보조기억장치와 파일간의 매핑
- 백업
*
*
*
*
쭉 읽어보면 될듯합니다..
1.7 가상화 (Virtualization)
단일 컴퓨터의 하드웨어를 여러 실행 환경으로 추상화하여 각 환경이 자체 개인 컴퓨터에서 실행되는 것처럼 보이는 기술
- 가상 머신(Virtual Machines): 가상화를 통해 운영 체제를 다른 운영 체제 내에서 애플리케이션으로 실행할 수 있다. 사용자는 단일 OS에서 서로 다른 프로세스 간을 전환하는 것처럼 이러한 운영 체제 간에 전환할 수 있다.
- 에뮬레이션 (Emulation)은 일반적으로 소스 CPU와 대상 CPU가 다를 때 소프트웨어에서 하드웨어를 시뮬레이션한다. 각 기계 수준 명령어를 번역해야 하기 때문에 속도가 더 느리다.
- 가상화는 동일한 CPU 아키텍처를 사용하여 다른 OS 내에서 기본적으로 OS를 실행하며 에뮬레이션보다 더 효율적이다.
1.10 계산 환경 (Computing Environments)
전통적인 컴퓨팅 (Traditional Computing)
- 독립형 작업을 위해 또는 다른 시스템과 상호 작용하기 위해 네트워크로 연결된 범용 컴퓨터를 사용한다.
- 시스템은 운영 체제를 사용하여 리소스를 관리하며 응용 프로그램은 종종 시간 공유 시스템에서 CPU 시간을 공유한다.
- 시간 공유를 통해 CPU 시간을 서로 다른 프로세스에 할당하는 배치, 대화형 및 다중 사용자 시스템이 포함된다.
모바일 컴퓨팅 (Mobile Computing)
- 스마트폰, 태블릿 등 휴대용 기기에서의 컴퓨팅을 의미한다.
- 모바일 장치는 가벼우며 GPS, 가속도계, 터치스크린과 같은 기능을 갖추고 있어 내비게이션 및 증강 현실과 같은 고유한 애플리케이션을 가능하게 한다.
- 이러한 장치는 연결을 위해 무선 네트워크(예: Wi-Fi, 셀룰러 데이터)를 사용하며 iOS 및 Android와 같은 경량 운영 체제를 사용한다.
클라이언트-서버 컴퓨팅(Client –Server Computing)
- 클라이언트 시스템이 컴퓨팅 또는 파일 스토리지와 같은 서비스를 제공하는 서버 시스템에 요청을 보내는 네트워크 모델이다.
- 서버는 컴퓨팅 서버(요청 처리) 또는 파일 서버(파일 저장 및 제공)일 수 있다.
- 이 아키텍처를 사용하면 클라이언트는 제어된 방식으로 리소스나 데이터를 위해 서버와 상호 작용할 수 있다.
P2P(Peer-to-Peer) 컴퓨팅
- P2P 시스템에는 중앙 집중식 서버가 없다. 모든 노드는 클라이언트와 서버 역할을 하며 서비스를 제공하고 요청한다.
- 이러한 시스템은 여러 노드에 서비스를 분산시켜 병목 현상을 줄인다. 노드는 중앙 디렉터리에 서비스를 등록하거나 브로드캐스트 요청을 통해 서비스를 검색한다.
➡️토렌트, 소리바다 etc..
클라우드 컴퓨팅 (Cloud Computing)
- 일반적으로 종량제 방식으로 저장, 처리, 애플리케이션 등 컴퓨팅 리소스를 인터넷을 통해 제공하는 것을 의미한다.
- 클라우드 서비스 종류 : 퍼블릭 클라우드(누구에게나 개방), 프라이빗 클라우드(기업에 한함), 하이브리드 클라우드(혼합)
- 조직이 리소스를 유연하게 확장할 수 있도록 지원하는 IaaS(인프라), PaaS(플랫폼), SaaS(소프트웨어)와 같은 서비스가 포함됨
실시간 임베디드 시스템 (Real-Time Embedded Systems)
- 기계, 센서 및 기타 실시간 애플리케이션 제어와 같이 종종 시간 제약이 있는 특정 작업을 수행하는 장치에 사용됨
- 실시간 시스템은 정해진 시간 내에 데이터를 처리하고 응답해야 하며, 그렇지 않으면 장애가 발생할 위험이 있다.
- 자동차, 로봇 공학, 의료 기기와 같은 산업에서 일반적이며 정확한 타이밍 요구 사항을 충족하기 위해 실시간 운영 체제에 의존하는 경우가 많다.
'운영체제 공룡책' 카테고리의 다른 글
[운영체제 공룡책] 6장 Synchronization Tools(동기화 도구) (1) | 2025.01.02 |
---|---|
[운영체제 공룡책] 5장 CPU Scheduling (2) | 2024.12.14 |
[운영체제 공룡책] 4장 Threads &Concurrency (1) | 2024.11.26 |
[운영체제 공룡책] 3장 ProcessManagement (4) | 2024.11.20 |
[운영체제 공룡책] 2장 Operating - System Structures (4) | 2024.11.13 |