운영체제 CHAPTER1. Overview

LYN L·2022년 8월 19일
0

Operating-System

목록 보기
2/5

Operating System Concept 9th 를 기반으로 운영체제 내용을 정리하기로 한다.
추가로 inflearn에서 <운영체제 공룡책 강의>를 수강하였다.

CHAPTER1 - Overview

  • Chapter1에서는 책 전반에 걸친 내용을 요약하는 게 담겨 있다.
  • 전반에 대한 내용이기에 책 전체를 다 공부한 뒤 읽는 것도 추천한다.
  • 그러므로 오늘 전반적인 내용을 적어두고, 틈틈이 3-4번 더 읽어볼 것을 추천!🤓

1.0 Introduction

  • 운영체제는 컴퓨터 하드웨어를 관리하는 프로그램이다.

  • 운영체제는 응용 프로그램을 위한 기반을 제공한다.

  • 운영체제는 컴퓨터 사용자와 컴퓨터 하드웨어 사이에서 중재자 역할을 수행한다.

  • 대형 컴퓨터의 운영체제는 주로 하드웨어의 이용을 최적화하는 데 중점을 둔다.

  • 개인용 컴퓨터에서는 복잡한 게임, 비즈니스 등 어플리케이션 지원에 중점을 둔다.

  • 휴대용 컴퓨터 운영체제는 사용자가 컴퓨터와 쉽게 interface 할 수 있는 환경을 제공하는 데 중점을 둔다.
    정리 : 운영체제의 종류와 목적에 따라 편리성, 효율성 등 다양한 기준에 따라 설계되었다.


1.1 What Operating Systems do

  • Computer System은 하드웨어, 운영체제, 응용 프로그램, 사용자로 구분된다.
  1. 하드웨어: CPU(중앙처리장치), 메모리, I/O(입출력장치)로 구성되어 기본 계산용 자원을 제공
  2. 운영체제(OS): 응용 프로그램 간의 하드웨어 사용을 제어하고 조정한다.
  3. 응용 프로그램: 워드 프로세서, 스프레드 시트, 컴파일러 등 이들 자원이 어떻게 사용될지 결정
  • Computer System은 하드웨어, 소프트웨어 및 데이터로 구성되어있다고 볼 수도 있다.
  • 운영체제는 컴퓨터 시스템이 동작할 때, 이들 자원을 적절하게 사용할 수 있는 방법을 제공한다.
  • 운영체제는 정부와 비슷하다. 즉, 다른 프로그램이 유용하게 사용할 수 있는 '환경'을 제공한다.

사용자 관점 User View

  • 컴퓨터의 사용자 관점은 사용되는 인터페이스에 따라 달라진다.
  1. Personal Computer
  • 보통 사용자들은 키보드, 마웃, System Unit으로 구성된 PC 앞에서 작업한다.
  • 한 사용자가 자원 독점하도록 설계 + 사용자가 수행하는 작업을 최대화하는 게 목표
  • 사용의 용의성을 위해 설계됨
  1. 대형 컴퓨터 or 미니 컴퓨터에 연결된 터미널
  • 다른 사용자들은 동일한 컴퓨터에 대해 다른 터미널을 접근하고 있다.
  • 이들 사용자들은 자원을 공유하며, 정보를 교환할 수 있다.
  • 따라서 이 경우 OS는 자원의 이용을 극대화하도록 설계되어 있어 CPU 시간, 메모리 등이 효율적으로 사용된다.
  1. WorkStation과 Server의 Network에 연결된 워크스테이션과 관계된 경우
  • 사용자들은 자유롭게 사용할 수 있는 전용 자원이 있다.
  • 네트워킹과 프린트 서버 등을 공유하기 때문에 사용의 용이성자원의 이용이 조화를 이루도록 설계된다.

시스템 관점 System View

  • 운영체제는 하드웨어와 가장 밀접한 프로그램, 운영체제를 자원 할당자 (Resource Allocator)로 볼 수 있다.
  • CPU Time, 메모리 공간 등을 효율적으로 사용하기 위한 자원의 관리자 역할을 수행한다.
  • 운영체제는 제어 프로그램(Control Program)으로, 입출력 장치의 제어와 작동에 깊이 관여한다.

운영체제 정의 Definition of OS

  • 완벽한 정의는 없다
  • 운영체제가 존재하는 이유: 운영체제가 유용한 컴퓨터 시스템을 만드는 과정에서 발생하는 문제점을 해결하기 위해 적절한 방법이기 때문이다.
  • 컴퓨터 시스템의 근본 목적은 사용자 프로그램을 실행하고, 사용자 문제의 해결을 보다 쉽게 해주는 데 있다.
  • 이 목적을 달성하기 위해 컴퓨터 하드웨어가 제작되며, 순수 하드웨어만으로는 해결되지 않아 응용 프로그램이 개발되었다. 다양한 프로그램들은 입출력 장치의 통제와 같이 공통적인 연산을 필요로 한다.
  • 여기에 자원을 할당하고 제어하는 공통 기능을 하나의 소프트웨어로 통합한 것이 운영체제 이다.
  • 일반적 정의 : 컴퓨터에서 항상 수행되는 프로그램으로 커널(Kernel)이라고 불린다.

1.2 컴퓨터 시스템의 구성 (Computer-System Organization)

현대의 일반적인 컴퓨터 시스템은 여러개의 CPU와 장치 컨트롤러로 구성되어 있다. 그리고 이들은 Common Bus로 이어져 메모리를 공유한다.

컴퓨터 시스템 연산 (Computer-System Operation)

  • 현대의 범용 컴퓨터 시스템은 Shared Memory에 대한 접근을 제공하는 공통 버스에 의해 연결된 여러 개의 장치 제어기 (오디오 장치, 비디오 디스플레이)와 하나 이상의 CPU로 구성되어 있다.

Computer Startup

  • 컴퓨터가 구동을 시작할 때, 수행할 초기 프로그램으로 부트스트랩(BootStrap) 프로그램이 있다.

  • 보통 펌웨어(firmware)라고 알려져 있는 컴퓨터 내의 ROM(Read-Only Memory)이나 EEPROM(Electrically Erasable Programmable Read-Only Memory)에 저장된다.

  • CPU 레지스터로부터 장치 제어기, 메모리 내용 등을 포함한 시스템의 모든 면을 초기화한다.

  • 이 프로그램은 운영체제를 적재하는 방법 및 수행을 시작하는 방법을 알아야 한다.

  • 이 목적을 달성하기 위해 BootStrap Program은 운영체제의 커널을 찾아 메모리에 적재해야 한다.

  • UNIX에서는 첫 시스템 프로세스가 'init'이며, 이 단계가 끝나면 시스템이 완전히 부트 된 상태이다. 이후 시스템은 무슨 사건(event)이 발생하기를 기다린다.

  • 사건이 발생하면, Hardware 또는 Software로부터 발생한 인터럽트에 의해 신호가 보내진다.

  • Hardware는 어느 순간이든 System Bus를 통해 CPU에 신호를 보내고, 인터럽트를 발생시킬 수 있다.

  • Software는 System Call 이라 불리는 특별한 연산을 통해 인터럽트를 발생시킬 수 있다.

  • CPU가 인터럽트 되면, CPU는 하던 일을 중단하고 즉시 고정된 위치로 실행 위치를 옮긴다.

  • 이 위치는 일반적으로 인터럽트를 위한 서비스 루틴이 위치한 시작 주소를 가지고 있으며, 인터럽트 서비스 루틴이 시작된다. 인터럽트 서비스 루틴이 완료된 뒤에는, 인터럽트 됐던 연산을 재개한다.

  • 인터럽트 구조는 인터럽트 된 명령의 주소를 반드시 저장해야 하며, 복귀하기 전에 상태를 복원해야 한다.

  • 인터럽트를 서비스 한 후, 저장되어 있던 복귀 주소를 Program Counter에 적재하고, 인터럽트에 의해 중단되었던 연산이 인터럽트가 발생하지 않았던 것처럼 다시 시작한다.

저장 장치 구조 (Storage Structure)

커널은 실행기(Executor)를 통해 프로그램을 실행시킨다. 실행기는 기억장치(Storage)에서 exe파일(Windows의 경우)를 가져오고, 커널이 이것을 메모리에 할당해 실행시킨다. 이처럼 모든 프로그램은 메인 메모리에 로드외어 실행되며, 메인 메모리는 보통 RAM(Random-Access Memory)라고 부른다. 하지만 RAM은 모든 프로그램을 담기엔 너무 작고 비싸다. 또한 전원이 나가면 저장된 데이터가 모두 사라지는 휘발성(Volatile)장치다. 그래서 보조기억장치(Secondary storage)가 필요하다.

  • 이상적으로는, 프로그램과 데이터가 주 메모리에 영구히 존재하기를 원하지만, 아래 두 가지 이유로 불가능!
  1. 주 메모리(RAM)은 모든 필요한 프로그램과 데이터를 영구히 저장하기에는 너무 작다.
  2. 주 메모리(RAM)은 전원이 공급되지 않으면, 그 내용을 잃어버리는 휘발성 저장 장치이다.
  • 주 메모리의 확장으로 보조 저장 장치를 제공한다.
  • 보조 저장 장치의 주요 요건은 대량의 데이터를 영구히 보존할 수 있어야 한다는 점이다.
  • 캐시 메모리, CD-ROM, 자기 테이프 등 여러 저장 장치가 존재한다.
  • 저장 장치 시스템 간의 주된 차이점은 속도, 가격, 크기, 휘발성이다.

입출력 구조 (I/O Structure)

기억장치는 여러 입출력장치 중 하나일 뿐이다. 컴퓨터는 다양한 입출력 장치를 가지고 있으며, 입출력 컨트롤러는 각각 다른 장치를 담당한다. 컴퓨터는 이 컨트롤러 덕분에 다양한 장치를 사용할 수 있다. 또한 운영체제는 각 장치 컨트롤러를 제어하기 위한 장치 드라이버를 가지고 있다.

입출력 명령을 수행하기 위해 장치 드라이버는 장치 컨트롤러의 레지스터를 로드한다. 장치 컨트롤러는 레지스터에서 "키보드로부터 문자 읽어오기"와 같은 동작을 읽고, 장치에서 로컬 버퍼로 데이터를 전송하기 시작한다. 데이터의 전송이 끝나면 장치 컨트롤러는 장치드라이버에게 인터럽트를 보내 동작이 끝났음을 알리고, 장치 드라이버는 통제권을 운영체제에게 돌려준다.

사용자 프로그램은 커널과 사용자 프로그램을 매개하는 인터페이스인 시스템 콜(System call)을 통해 입출력을 요청할 수 있다.

  • 시스템의 신뢰성과 성능에 미치는 영향 때문에, 그리고 장치들의 다양한 특질 때문에 운영체제 코드의 많은 부분들이 입출력을 관리하는데 할애된다.
  • 디바이스 드라이버를 이용하는 인터럽트 구동 방식은 적은 양의 데이터를 전송하는 데에는 문제가 없으나, 디스크 입출력과 같은 대량의 데이터를 전송하는 데에는 높은 Overhead를 초래한다.

해결 ➡️ DMA(Direct Memory Access) 장치가 사용

  • DMA를 사용하여 CPU의 개입 없이, (메모리 -> 자신의 버퍼) or (버퍼 -> 메모리)로 데이터 블록 전체를 전송한다.

1.3 컴퓨터 시스템 구조

현대 컴퓨터 시스템은 기본적으로 폰 노이만 구조를 따른다.

단일-처리기 시스템(Single-Processor Systems)

과거 대부분의 컴퓨터는 싱글 프로세서를 사용했다. 싱글 프로세서 컴퓨터에는 하나의 메인 CPU만 탑재되며, 장치에 따라 특별한 목적을 가진 프로세서가 들어갔다. 가령 디스크 프로세서는 디스크 연산만 수행하고, 키보드 프로세서는 키보드 연산만 수행하는 식이다.

  • 특수 목적의 전용 처리기를 가지고 있다.

다중-처리기 시스템(Multi-Processor Systems)

이젠, 일반적인 컴퓨터 시스템이 되었다. 멀티 프로세서 컴퓨터는 2개 이상의 프로세서를 가지고 있다. 처음에는 서버 컴퓨터에 처음 적용됐는데, 지금은 모바일 기기도 멀티 프로세서 시스템으로 만들어진다. 멀티 프로세서 시스템은 몇 가지 장점을 가지고 있다.

  1. 처리량(Throughput)의 증가:
    프로세서가 늘어나면 더 빠른 시간 안에 연산을 수행할 수 있다. 물론 프로세서를 계속 늘린다고 성능이 한없이 좋아지는 것은 아니며, 증가 비율이 1:1인 것도 아니다.
  2. 규모의 경제:
    멀티 프로세서 시스템은 여러 대의 싱글 프로세서 시스템을 구축하는 것보다 돈이 적게 든다. 멀티 프로세서 시스템은 주변장치(Peripherals)를 공유할 수 있기 때문이다.
  3. 신뢰성의 증가:
    만약 여러 프로세서에 분산될 수 있다면, 하나의 프로세서가 작동을 멈춰도 전체 시스템은 느려질 뿐 멈추지 않는다. 이런 식으로 성능이 나빠지지만 작동은 가능하도록 하는 것을 우아한 성능 저하(Graceful degradation)이라고 부른다. 그리고 이렇게 성능을 저하함으로써 작업을 계속 유지하는 시스템을 장애 허용 시스템(Fault Tolerant)라고 한다.

Asymmetric[비대칭적], Symmetric[대칭적]

다중 처리기 시스템의 두 형태

  • 비대칭적 다중처리 방식에는 각 처리기에 특정 task가 할당되는 방식이며, 하나의 주 처리기가 시스템을 제어한다. 주처리기는 작업을 스케줄하고 종속처리기에 작업을 할당한다.
  • 대칭적 다중 처리방식은 각 처리기가 운영체제 내의 모든 작업을 수행하는 방식이다. SMP는 모든 처리기가 대등하다는 것을 의미하며, 처리기 간에는 주종이 없다. 각 처리기는 자신의 register와 cache를 가지지만, 모든 처리기는 memory를 공유한다.
  • 둘의 차이는, 하드웨어나 소프트웨어의 결과일 수 있다.
  • 다중처리에서는 계산 능력을 늘리기 위해 CPU를 추가한다. 다중처리는 Memory Access Model을 UMA에서 NUMA로 변경하여 만들 수도 있다.
    (UMA: Uniform Memory Access, NUMA: Non-Uniform Memory Access)
  • UMA는 임의의 CPU로부터 임의의 RAM을 같은 시간에 접근할 수 있는 상태를 말한다.
  • NUMA의 경우, 일부 메모리는 다른 위치의 메모리보다 접근 시간이 오래 걸려 성능 저하를 유발한다.

1.4 운영체제의 구조 (Operating-System Structure)

  • 운영체제는 프로그램이 수행될 환경을 제공한다.

  • 운영체제는 다양한 발전 방향을 따라 구성되었기 때문에, 내부 구조가 매우 다양하다.

  • 가장 중요한 면은 다중 프로그래밍(Multi-Programming)을 할 수 있는 능력이다.

  • 일반적으로, 단일 사용자는 CPU 또는 입출력 장치를 항상 바쁘게 유지할 수 없다.

  • 다중 프로그래밍 (Multi-Programming)은 CPU가 수행할 작업을 항상 하나 가지도록 작업을 구성하며, CPU이용률 (CPU Utilization)을 증가시킨다.

<기본 idea>
1. 운영체제는 한 번에 여러 작업을 메모리에 적재하며, 이들 작업은 처음에 디스크의 작업 풀 내에 유지된다.
2. 보통 운영체제는 메모리에 있는 작업 중에서 하나를 선택해 실행을 시작한다.
3. 비다중 프로그래밍 시스템에서는 CPU가 쉬게 되지만, 다중 프로그래밍 시스템에서는 운영체제가 단순히 다른 작업으로 전환해 그 작업을 수행한다.

  • Multi-Tasking(시분할)은 다중 프로그램의 논리적 확장이다.

  • Multi-Tasking 시스템에서는 CPU가 다수의 작업들을 교대로 수행하지만, 매우 빈번하게 교대가 일어나기 때문에, 프로그램이 실행되는 동안에 사용자들은 각자 자기의 프로그램과 상호 작용할 수 있다.

  • Multi-Tasking 운영체제는 각 사용자에게 시분할 되는 컴퓨터의 작은 부분을 제공하기 위해서 'CPU 스케줄링'과 '다중 프로그래밍'을 사용한다.

  • Multi-Tasking과 다중 프로그래밍 운영체제에서는 여러 작업이 메모리에 동시에 유지되어야 한다. 만약 몇몇 작업이 메모리로 옮겨울 준비가 되었고, 그들 전부를 메모리에 보관할만한 공간이 불충분하다면, 시스템은 그들 중 몇 개를 선택해야 한다. 이러한 결정을 하는 것을 작업 스케줄링이라고 한다.

  • 여러 개의 작업이 동시에 실행 준비가 되어 있으면, 시스템은 그들 중 하나를 선택해야 한다. 그러한 결정을 내리는 것을 CPU 스케줄링이라고 한다.

  • 합리적인 응답 시간을 보장하는 더 일반적인 방법은 가상 메모리(Virtual Memory)이다.

  • 이 방법은 일부만 메모리에 있는 작업의 수행을 허용하는 기법이다. (9장)

  • 이 기법의 주요한 이점은 프로그램이 물리 메모리의 크기보다 더 커도 된다는 것이다.

  • 더욱이 가상 메모리는 주 메모리를 크고 균등한 저장 장치의 배열로 추상화하여, 사용자에게 보이는 논리 메모리를 물리 메모리로부터 분리시킨다.


1.5 운영체제 연산 (Operating-System Operations)

  • 현대 운영체제: interrupt-driven 방식
  • 실행할 프로세스, 서비스할 입출력 장치, 응답해야 할 사용자도 없다면 운영체제는 그저 기다리게 된다.

이중 연산 모드

  • 적절한 동작을 보장하기 위해, 운영체제 코드의 실행과 사용자 정의 코드의 실행을 구분할 수 있어야 한다.
  • 두 개의 독립된 연산 모드인, 사용자 모드(User Mode)와 커널 모드(Kernel Mode)를 정의하여 사용한다.
  • 보통 모드 비트(Mode bit)를 컴퓨터의 하드웨어에 추가하여, 현재 Mode를 구분한다.
  • 하드웨어의 모드 비트(Mode bit)가 0은 커널 모드, 1은 유저 모드임을 가리킨다.
  • 이러한 이중 모드 (Dual-mode) 방식을 사용하면 나쁜 의도를 가진 사용자로부터 운영체제, 하드웨어를 비롯한 시스템과 사용자를 보호할 수 있다. 하드웨어는 커널 모드일 때만 특권 명령(priviledged instructions)를 실행한다. 만약 유저 모드에서 특권 명령을 실행하려 한다면 하드웨어는 이 동작을 막고 운영체제에게 트랩을 보낼 것이다. 유저 모드에서 합법적으로 커널 모드의 기능을 호출하고 싶다면 시스템 콜(system call)이라는 인터페이스를 통해야 한다.

타이머

  • 운영체제는 사용자의 프로그램이 제어권을 운영체제에게 넘겨주지 않는 상황을 방지하기 위해 타이머를 사용한다. 타이머는 운영체제에게 제어권을 보장하기 위해 특정 주기에 인터럽트를 발생시킨다. 운영체제는 카운터를 설정하고, 매 틱마다 감소시킨다. 그렇게 카운터가 0에 도달하면 인터럽트가 발생한다.

1.6 프로세스 관리(process Management)

  • ⭐️ 실행 중인 프로그램(program in executrion) = 프로세스(process)

  • ⭐️ 프로그램은 passive(수동적)인 개체인 반면, 프로세스는 프로그램 카운터를 가진 active(능동적)개체

  • 프로그램은 해당 instruction이 CPU에 의해 수행되지 않으면, 아무 일도 할 수 없다.

  • 프로세스는 자신의 일을 수행하기 위해 CPU시간, 메모리, 파일, 그리고 입출력 장치를 포함한 여러 가지 장치를 필요로 한다.

  • 한 프로세스는 한 시스템 내의 작업의 단위이다. 이러한 시스템은 프로세스의 집합으로 구성되는데, 프로세스들 중 일부는 운영체제 프로세스들(시스템 코드 수행)이며, 나머지는 사용자 프로세스들(사용자 코드 수행)이다.

<운영체제는 프로세스 관리와 연관해 다음과 같은 활동에 대한 책임을 진다.>
1. CPU에 Process와 thread를 schedule 하기.
2. User Process와 System Process의 생성과 제거
3. Process의 일시 중지와 재수행
4. Process Synchronization를 위한 기법 제공
5. Process Commnication을 위한 기법 제공


1.7 메모리 관리(Memory Management)

메인 메모리는 현대 컴퓨터 시스템의 핵심이며, 방대한 바이트의 배열이다. 그리고 각 바이트는 그들만의 주소를 가지고 있다. 이후 프로그램이 실행될 때 프로그램은 절대 주소(Absolute address)로 매핑(Mapping)되어 메모리에 로드된다. 메모리 관리는 여러 요인을 고려해야 하는 작업이며, 특히 시스템의 하드웨어 설계를 신경써야 한다.

운영체제는 메모리 관리를 위해 메모리의 어떤 부분이 어디에 쓰이는지, 누가 사용하는지 추적하고, 어떤 프로세스와 데이터가 메모리의 안팎으로 옮겨질지 결정한다. 또한 메모리 공간을 할당하고 해제하는 것도 운영체제가 하는 일이다.

CPU 이용률과 사용자에 대한 컴퓨터의 응답 속도를 개선하기 위해, 우리는 메모리에 여러 개의 프로그램을 유지해야 하며, 이를 위해서 메모리 관리 기법이 필요하다.

  • 운영체제는 메모리 관리와 관련하여 아래와 같은 일을 담당해야 한다.
  1. 메모리의 어느 부분이 현재 사용되고 있으며, 누구에 의해 사용되고 있는지를 추적해야 한다.
  2. 어떤 프로세스들을 메모리에 적재하고, 제거할 것인가를 결정해야 한다.
  3. 필요에 따라 메모리 공간을 할당하고 회수해야 한다.

1.8 저장 장치 관리 (Storage Management)

운영체제는 저장장치의 물리적 속성을 추상화해 파일(File)이라는 논리적 저장 단위로 정의하며, 파일을 물리적 매체(Physical media)에 담거나 저장장치의 파일에 접근하기도 한다.

File-System Management

  • 파일 관리는 운영체제가 하는 일 중 가장 눈에 잘 보이는 요소다. 운영체제는 파일을 생성, 제거하며, 당연히 읽기, 쓰기도 한다.

Mass-Storage Management

  • 프로그램은 디스크에 담겨 있으며, 메인 메모리에 로드 되어 실행된다. 많은 사람들이 제 3의 저장 장치 (Tertiary Storage Devices)를 사용한다. 저장 장치들은 WORM(Write-Once, Read-Many Times)와 RW(Read-Write) 형식에 차이가 있다. 한번쯤 봤을 NTFS, FAT가 파일 저장 형식이며, 이를 파일 시스템(File System)이라고 부른다.
  • main memory는 용량이 작고 휘발성이기 때문에, 내용을 저장하기 위해 보조 저장 장치를 제공해야 한다.
    운영체제의 디스크 관리를 위한 역할, 자유공간의 관리 저장 장소 할당 디스크 스케줄링

Caching

  • 정보는 저장 장치에 보관되지만, 정보를 사용할 때 보다 빠르게 처리하기 위해 Cache에 일시적으로 복사된다.
  • 특정 정보가 필요한 경우 우선적으로 캐시에 그 정보가 있는지 검사하는 과정을 거친다.
  • 캐시에 해당 정보가 없을 경우, Main Memory System으로부터 그 정보를 가져와서 사용해야 한다.
  • 이때, 이 정보가 다음에 다시 사용될 화률이 높다는 가정이 있다면, 그 정보를 Cache에 넣게 된다.

1.9 보호와 보안 (Protection and Security)

  • 운영체제는 내외부로부터 컴퓨터를 위험하게 만드는 요소를 막기 위해 다양한 활동을 한다. (유저 모드와 커널 모드를 나눈 것도 보호의 일종이다.)
  • 권한 확대(Privilege escalation)는 컴퓨터 시스템의 권한을 여러 층으로 나누고, 사용자의 권한을 구분해 어떤 행동이나 기준에 따라 사용자의 권한을 상승시키는 시스템이다.

1.10 커널 자료 구조 (Kernel Data Structures)

  • 커널 구현에서는 기본적인 리스트, 스택, 큐, 링크드리스트 등의 자료구조가 사용된다. 특히 트리는 상당히 효율적인 O의 시간 복잡도를 가질 수 있기 때문에 자주 사용된다.

1.11 계산 환경 (Computing Environments)

  • 전통적인 계산 환경의 경계가 흐려지고 있다.
  • Mobile Computing은 휴대용 스마트폰과 태블릿 컴퓨터의 계산을 말한다.
  • 분산 시스템은 물리적으로 떨어져 있는 컴퓨터들의 집합이다.
  • 분산 시스템의 컴퓨터들은 사용자가 시스템 내의 다양한 자원들을 접근할 수 있도록 네트워크로 연결되어 있다.
  • 가상화는 운영체제가 다른 운영체제 내에서의 하나의 application처럼 수행될 수 있게 한다.
  • 클라우드 컴퓨팅은 computing storage, application까지 네트워크를 통한 서비스로 제공하는 계산 유형이다.

1.12 오픈소스 운영체제

  • 오픈소스 운영체제는 컴파일된 Binary Code 보다는 Source Code 형태로 받을 수 있는 운영체제를 의미한다.
  • 오픈소스의 대표적인 운영체제로는 Linux, Solaris 등이있다.

1.13 요약

  • 운영체제는 하드웨어를 관리할 뿐 아니라 application이 실행되기 위한 환경을 제공하는 소프트웨어이다.

  • 컴퓨터가 program을 수행하려면 program이 main memory에 있어야 한다.

  • 주 메모리는 메모리가 직접 접근할 수 있는 유일한 대량 저장 장치로서, 휘발성 저장 장치이다.

  • 대부분의 컴퓨터 시스템은 주 메모리의 확장으로 보조 저장 장치를 제공한다.

  • 보조 저장 장치는 대용량의 데이터를 영원히 보존할 수 있는 비휘발성 저장 장치이다.

  • 단일 처리기 시스템(Single Processor System)은 하나의 Processor만을 가지고 있다.

  • 다중 처리기 시스템(Multi Processor System)은 물리 메모리와 주변 장치들을 공유하는 둘 또는 그 이상의 처리기를 가지고 있다.

  • CPU를 최대한 활용하기 위해, 현대의 운영체제들을 다중 프로그래밍(multi-programming) 개념을 도입했다.

  • 다중 프로그래밍에서는 한 번에 여러 job들을 memory에 유지하므로, CPU는 항상 실행할 작업을 가지게 된다.

  • 시분할 시스템(multi-tasking system)은 다중 프로그래밍의 확장이며, CPU 스케줄링 알고리즘은 작업들을 빠르게 교환해 가며 실행함으로써, 마치 각 작업이 동시에 실행되는 것 같은 착각을 주게 된다.

  • 운영체제는 컴퓨터 시스템의 정확한 동작을 보상해야 한다.

  • 사용자 프로그램이 시스템의 정상적인 동작을 방해하는 것을 막기 위해, 하드웨어는 사용자 모드와 커널 모드를 가지고 있으며, 여러가지 privileged instruction들은 kernel mode에서만 실행 가능하다.

  • timer는 무한 루프를 방지하는 효과를 가지고 있다.

  • Process는 운영체제에서의 일의 기본적인 단위이다.

  • Process Management는 프로세스의 생성 및 제거, 프로세스 간의 통신 및 동기화 기법을 포함한다.

  • 운영체제는 어느 프로세스가 메모리의 어느 영역을 사용하고 있는지를 추적하여 메모리를 관리한다.

  • 운영체제는 운영체제와 사용자를 보호하고 보안을 유지해야 한다.

  • '보호' 기법은 컴퓨터 시스템이 제공하는 자원들에 대한 프로세스와 사용자의 접근을 제어한다.

  • '보안' 기법은 외부 또는 내부의 공격에 대해 컴퓨터의 시스템 방어를 책임진다.

  • 컴퓨팅은 다양한 환경에서 이루어진다.

  • 전통적 컴퓨팅, 이동형 컴퓨팅, 분산 시스템, 클라우드 컴퓨팅 증이 있다.

profile
steadily, off the wall

0개의 댓글