운영체제 공룡책

[운영체제 공룡책] 1장 Overview

studyingalone 2024. 11. 7. 23:04
728x90

운영체제 공룡책: 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 사이클

  1. CPU 하드웨어에는 인터럽트 요청선(interrupt-request line)이라는 선이 있으며, CPU는 매 명령을 실행한 후 이 선을 감지한다.
  2. CPU가 컨트롤러가 인터럽트 요청선에 신호를 보냈음을 감지하면, 인터럽트 번호를 읽고, 이 인터럽트 번호를 인터럽트 벡터에서 인덱스로 사용하여 인터럽트 처리 루틴으로 점프한다.
  3. 그런 다음 해당 인덱스에 연결된 주소에서 실행을 시작한다.
  4. 인터럽트 핸들러는 작업 중 변경될 상태를 저장하고, 인터럽트 원인을 파악하여 필요한 처리를 수행한 후, 상태를 복원하고 인터럽트에서 복귀 명령을 실행하여 CPU를 인터럽트 이전의 실행 상태로 되돌다.
  5. 우리는 장치 컨트롤러가 인터럽트 요청선에 신호를 보냄으로써 인터럽트를 발생시켰다고 하며, 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)

  • 처리량과 속도를 높이기 위해 두 개 이상의 프로세서가 포함
➡️a.k.a 멀티 코어  ... 인텔 i7, i9

 

 

클러스터형 시스템(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)

  • 기계, 센서 및 기타 실시간 애플리케이션 제어와 같이 종종 시간 제약이 있는 특정 작업을 수행하는 장치에 사용됨
  • 실시간 시스템은 정해진 시간 내에 데이터를 처리하고 응답해야 하며, 그렇지 않으면 장애가 발생할 위험이 있다.
  • 자동차, 로봇 공학, 의료 기기와 같은 산업에서 일반적이며 정확한 타이밍 요구 사항을 충족하기 위해 실시간 운영 체제에 의존하는 경우가 많다.

 

 

 

 

728x90
반응형