Kernel : 상시구동하며, OS의 core.
middleware : 소프트웨어의 일종으로 개발자에게 추가 서비스를 제공한다. (마우스 커서 등)

운영체제는 환경을 제공한다.
시스템 리소스를 관리한다.
+운영체제를 공부하는 이유
거의 모든 코드가 운영 체제 위에서 실행되기 때문에 효율적/효과적/안전한 프로그래밍에 매우 중요하다.
Von Neuman 구조


디스크의 이미지 파일에서 메모리로 로딩하기
메인 메모리가 멀티프로그래밍/멀티테스킹 시스템에서 모든 프로세스를 수용하기에 충분하지 않다.

locality(지역성)의 원리를 활용하여, 가장 저렴한 기술로 사용자에게 최대한 많음 메모리를 제공하고 가장 빠른 기술이 제공하는 속도로 엑세스 제공
locality 데이터가 지역적으로 모여있다

level 1에 존재하는 데이터는 level2 에도 존재한다!!

하나 이상의 CPU, device controller는 공유 메모리에 대한 엑세스를 제공하는 common bus를 통해 연결된다.
bus 장점 : 동시성
CPU와 device의 동시 실행은 메모리 사이클을 놓고 경쟁한다.

위 그림에서 device controller는 disk controller, USB controller, graphics adapter이다.
각각의 device controller에는 device driver(local buffer, register)가 존재한다.
CPU는 main 메모리-local buffer 로 데이터를 이동시킨다
I/O는 device → local buffer로 이동한다.
device controller가 interrupt를 발생시켜 CPU에 작업이 완료되었음을 알린다.
위 과정을 설명하는 예시)
-키보드에 값을 입력했을 때, 일련의 처리 과정
interrupt : “attention이 필요함”을 표시하는 하드웨어 또는 소프트웨어로부터의 비동기 신호
각각의 code 부분들이 interrupt 유형에 따른 대처방법을 결정한다.
interrupt vector : interrupt handler의 테이블
여러가지 interrupt의 유형에 따라 처리할 루틴의 주소를 보관하는 테이블 (주소록 느낌?)
프로세스 이벤트의 메커니즘
⚠️운영체제는 interrupt driven 프로그램이다.

Caching : 빠른 저장 시스템으로 정보를 복사한다
CPU - RAM (휘바성 저장장치) ⇒ 비휘발성 메모리가 필요하다
기준 : 용량/접근속도

장점 : 실제 전송 중에만 사용자 프로그램 프로세스가 중단된다.
단점
DMA : device controller가 다이렉트로 large bulk 데이터 → 메인 메모리로 전송한다.
CPU가 데이터 운송에 참여할 필요가 없다.
high bandwidth I/O 장치(하드디스크)의 블록전송에 적합하다

멀티프로세서 시스템의 장점

Symmetric multiprocessing (SMP)
Multicore system
one-chip communication이 더 빠르다.
확연하게 적은 power를 사용한다.
하나의 칩(프로세서)안에 CPU코어가 여러 개 이다.
여러 개의 프로세서를 묶는 것보다 하나의 프로세서에 여러 개의 코어를 넣는 것이 처리속도가 더 빠르고 전력 소모가 적어 효율이 높다. (프로세서 내에서 처리하는 것이 더 빠르기 때문)
SMP와 달리 코어 사이에 별도의 캐시가 존재하여 처리속도가 빠르다.
Windows, macOS, Linux, Android 및 iOS가 멀티코어 SMP 시스템을 지원한다.
(+) on-chip 통신이 더 빠르기 때문에 단일 코어가 있는 여러 칩보다 효율적이다.
(+) 여러 개의 단일 코어 칩보다 전력 소모가 적다.
Non-uniform memory access (NUMA)
각각의 CPU는 자체 local 메모리를 갖는다. (작고 빠른 local bus를 통해 접근되는)
멀티 시스템이 같이 일한다.
일반적으로 storage-area network(SAN)을 통해 저장소를 공유한다
clustered system을 사용하는 목적
부트스트랩 프로그램
커널 로드
system daemons(커널 외부에서 제공되는 서비스)을 시작한다
multiprogramming은 효율성을 위해 필요하다.
multitasking은 멀티프로그래밍의 논리적 확장이다.
현대의 운영체제는 인터럽트 구동 프로그램이다.
문제점 : 프로세스에서 에러가 발생 → 전체 시스템을 손상시킬 수 있다
다중 사용자 OS를 위한 요구사항 : 프로그램의 에러가 다른 프로그램에 영향을 주지 않아야 한다.
Dual-Mode는 운영체제가 자신과 다른 시스템 구성요소를 보호하도록 허락한다.
User Mode
Kernel Mode(supervisor mode, system mode, privileged mode)
Mode bit는 시스템 모드를 구별할 수 있게 한다.
user mode → 1
kernel mode → 0
Intel processor → 4개의 구분된 보호 ring 가짐
ARMv8 → 7개의 mode
CPU → virtualization have a separate mode
User program이 무한루프에 빠지거나/ 시스템 서비스 호출에 실패하고 return하지 않는 경우를 방지 하기 위함이다.
특정 시간 이후에 컴퓨터를 interrupt하도록 한다.
OS가 user process를 제어하기 전에, 미리 정의된 기간 후에 Timer가 interrupt하도록 설정된다.
⚠️privileged instruction으로만 time 카운터를 수정할 수 있다.
process : 실행 중인 프로그램, 프로그램 카운터를 가진 능동적 개체(active entity), 한 시스템 내의 작업의 단위
리소스로 CPU, 메모리, I/O 파일이 필요하다.
싱글 쓰레드 프로세스는 하나의 프로그램 카운터를 가진다.
Thread : 2개 이상의 task가 동시에 실행될 때 분할하기 위한 프로그램을 위한 방법
Task : address space를 통한 실행 경로
OS로 프로세스 관리하기
Memory Management는 메모리에 무엇이 언제 저장되는지를 결정한다.
주요 활동
OS가 정보 저장공간에 대한 uniform, logical view를 제공한다.
File은 보통 디렉토리로 구성된다.
접근 가능한 사용자를 결정하기 위해서 대부분의 시스템에 접근을 통제한다.
OS로 파일 시스템 관리하기
대부분의 프로그램은 메모리가 로드될 때까지 디스크에 저장된다.
OS로 대용량 저장소 관리하기
cache : 자주 사용하는 데이터 값을 미리 복사해놓는 임시장소
멀티프로세서 환경 → cache coherency(일관성)를 제공해야 한다. 모든 CPU가 cache의 최신값을 갖도록
cache coherence : 공유된 리소스의 local cache에 저장된 데이터의 integrity(무결성)
운영체제의 목적 중 하나는 사용자에게 하드웨어 장치의 특성을 숨기는 것이다.
I/O 서브 시스템이 담당하는 것
Protection : OS에 의해 정의된 리소스들에 대한 사용자/프로세스의 접근을 제어하기 위한 모든 메커니즘
ex) 고유한 사용자 ID, 그룹 ID
→ 인증을 도난당할 수 있기 때문에 보호가 충분하지 않다.
Security : 외부 및 내부 공격에 대한 방어
ex) DoS, worms, 바이러스 등등
Traditional Computing
포털→ 웹사이트 제공
Mobile Computing
스마트폰, 태블릿 등
애플 iOS, 구글 안드로이드가 선도하는 중
Client-Server Computing

현재 많은 시스템이 서버를 설치하여 클라이언트가 생성한 요청에 응답한다
넷플, 유튜브, 구글 등
분산 시스템의 또 다른 모델

P2P는 클라이언트와 서버를 구분하지 않는다.
운영체제가 다른 OS 내에서 어플을 실행할 수 있도록 한다.
개발 → 노트북
실행 → 애뮬레이터
애뮬레이션은 소스 CPU 타입이 타겟 파입이랑 다른 경우 사용된다.
가상화 : CPU용으로 기본 컴파일 된OS로 게스트 OS도 기본으로 실행된다.
VMM(virtual machine manager)를 통해 가상화 서비스를 제공한다
네트워크 전반에 걸쳐 컴퓨팅, 저장공간, 심지어 어플을 제공(deliver)한다.
가상화의 논리적 확장이다. (가상화를 기반으로 기능하기 때문에)
여러 종류
기존 OS, VMM, 클라우드 관리 툴로 구성된 클라우드 컴퓨팅 환경
컴퓨터의 가장 일반적인 형태인 실시간 임베디드 시스템
일부는 OS를 갖고, 일부는 갖지 않음
실시간 OS에는 명확한 고정 시간 제약이 있다.
OS는 소스 코드 형식으로 제공된다 (not binary closed-source)
저작권 및 DRM(digital rights management) 움직임에 대응
FSF(Free Software Foundation)로부터 시작되었다
예를 들면 GNU/Linux와 BSD UNIX(Mac OS X 의 코어를 포함하는) 등이 있다
Virtualbox 같은 VMM을 사용할 수 있다
(출처)
Operating System Concepts 도서
https://www.booksfree.org/operating-system-concepts-10th-edition-by-abraham-silberschatz-peter-b-galvin-greg-gagne-pdf/