웹, 모바일, 자동차 등 내장 컴퓨터를 통제하는 수단가장 간단한 운영체제를 표현하는 이미지 (사용자가 접근하는 SW - HW 중간 단계)OS가 없을 때: 사용자가 모든 HW 사용 방법을 알아야 한다. 여러 SW가 사용될 때 리소스 배분이 효율적이지 않을 수 있다. 개발
컴퓨터: Compute + -er앨런 튜링HW의 가파른 변화 양상 - 2년마다 트랜지스터의 수가 2배 가량 빨라진다는 관측 결과(연산 능력의 매우 빠른 발달): 진공관 → ... → ULSI(현재의 데스트탑 및 랩탑)"손으로 직접" 코드를 넣는 구조 ~ 시분할 기법까지
HW, OS, 어플리케이션 프로그램, 사용자시스템 버스는 1개여러 주변 기기를 연결하는 형태 → CPU, 메모리, I/O 속도가 비슷하다면 문제 없이 정보 전송 가능병목 현상(Bottleneck): CPU의 속도 ↔️ I/O 속도 차이, 전체 속도는 I/O의 속도(최저
유저 인터페이스 ↔️ 시스템 콜 ↔️ 서비스 ↔️ OS ↔️ HW시스템 콜을 중심으로 유저 공간 / 커널 공간으로 분리시스템 콜: 유저 → 커널 모드로 진입하는 통로(↔️ 콜백: 커널 → 유저 모드), 커널의 protected 서비스를 사용하기 위한 수단직접적인 시스템
HW를 효율적으로 사용할 수 있는 추상화 기법 제공추상화: 실제로는 존재 X, 잘 사용하기 위한 자료구조 제공CPU - 프로세스, 메모리 - 주소 공간, 네트워크 - 포트, 디스크 - 파일자원 공유/분배 정책: FIFO, LRU 등, 디자인 결정 필요(디바이스마다 서로
CPU 클록: 초당 클록 사이클 수CPU instruction cycles: 한 개 명령어 처리 주기추상화: OS는 HW 자원 → 논리적 자원으로 추상화 + 리소스 사용 인터페이스 제공어플리케이션 사용성(Usability)OS 자체에 대한 관리(Manageability
배치 스케줄링: 하나의 작업이 온전히 종료될 때까지 다른 작업을 실행하지 않고 기다리는 스케줄링멀티 프로그래밍: 하나의 작업이 종료하지 않아도 다른 작업을 실행하는 스케줄링(I/O 입력 등)Time sharing: 모든 프로그램이 정해진 타임 슬라이스 동안 CPU 점유
프로세스 상태: 상태 단위(New, Running, Waiting, Ready, Terminated)별로 큐를 사용CPU 스케줄링: 프로세스에 CPU를 할당하는 방법 → CPU 사용을 효율적으로 하기 위해서 time sharing 방법 적용"CPU를 사용할 다음 프로세
New, Running, Waiting, Ready, Termiate → 상태에 따라 CPU가 큐에 넣어 관리CPU, I/O burst: CPU가 alternate하는 가운데 어떤 부분을 더 많이 점유하는가에 따라서 intensive 부분이 달라짐CPU 스케줄러는 프로
멀티 프로세서: 여러 개의 프로세서 적용된 상태. CPU 스케줄링 알고리즘이 복잡해질 수 있음멀티 프로세서 내 CPU 종류가 다를 수도 있음비대칭적 멀티 프로세싱: 한 번에 한 프로세서만 데이터 접근 가능대칭적 멀티 프로세싱(SMP): 한 번에 여러 개의 프로세서가 접
Linux Scheduling: (1). O(1) 스케줄러 - 속도 빠르지만 응답 속도가 느림 (2). CFS: O(1) 스케줄러 + defualt/real-time 스케줄러nice value: -20 ~ +19 값 할당 → Quantum 계산, 낮은 값 = 높은 우선
Inter-Process Communiationindepedent process: 다른 프로세스와의 협업 Xcooperating process: 다른 프로세스와 협업 O → 다른 프로세스와 역할 분배(정바 공유, 연산 속도, 모듈화, 편리성) → 프로세스 간 통신(IP
클라이언트-서버 시스템 상의 통신 방법: 시그널, 파이프, 소켓두 개 이상의 프로세스에 비동기적 이벤트를 신호가장 오래된 IPC 방법신호 무시(SIGSTOP, SIGKILL), 신호 유예, 직접 처리, 커널 처리 등비동기적 IPC: 곧바로 시그널 처리 X. 시그널을 받
프로세스: CPU가 프로그램을 실행하는 추상화. 실행 상태, protection domain → 한 개의 실행 흐름을 가진 프로세스 = 여러 개의 실행 흐름을 가진 스레드스레드: 프로세스 내 실행 흐름, PC, 레지스터, 스택으로 구성 → 스레드는 속한 프로세스의 데이
일대일하나의 커널 스레드에 하나의 유저 스레드를 매핑하는 모델링다대일 모델보다 concurrency가 높음프로세스 내 스레드 개수가 오버헤드로 인해 제한됨(총 시스템에 의해 동작하는 스레드의 개수는 유저+커널, 기존에 비해 2배가 되므로 생성 스레드 개수가 제한되기도
동기화 공유 데이터 접근 순서를 정하는 방법 → Race condition으로 인한 Data inconsistency가 일어나지 않도록 방지 스레드 프로그래밍, 공유 메모리, 커널 스레드를 위한 동기화 필요 동기화의 정의 여러 개의 프로세스가 있을 때 각 프로세스는
두 개의 원자적 연산(atominc operation)을 가지는 정수 변수wait(), P() / signal(), V()P는 Critical Section 들어가기 전, V는 Critical Section 나온 후 실행P, V 연산: 독립적 + 원자젹 수행. 하나의
Deadlock Mutual Exclusion: 접근 제한. 자원이 유한한 사용자와만 공유 가능 No preemption: 자원 할당 → 다시 회수 X Hold and Wait: 여러 독립적 요청. 현재 자원을 잡고 있는 동안 다음 자원을 사용하기까지는 대기 필요 C
동기화 Dining Philosopher's Problem 5명의 철학자가 한 식탁에서 함께 식사를 할 때 젓가락을 어떻게 들지 해결하는 문제 deadlock, starvation 모두 발생 가능한 문제 자신의 바로 옆 젓가락만 집을 수 있다. 두 젓가락이 식사에
실제 주소 X사용자의 메모리로 사용되는 메모리프로세스 수행을 위해서 모든 프로그램이 메모리로 적재될 필요가 없다. 즉 피지컬 메모리에 담길 필요는 없다. → 현재 실행 중인 (코드/데이터/스택) 일부만이 피지컬 메모리에 적재되어 있기만 하면 된다.P1, P2, P3 모
Memory Management TLB Translation Lookaside Buffer 페이징 방법: 데이터 접근을 위해서 (1). 페이지 테이블 (2). 물리 메모리 데이터 접근 등 두 번 필요 → 메모리 접근 속도 저하 MMU에서의 TLB 사용: (1). 페
Memory Management Segmentation 메모리 관리 방법: 메모리의 유저 뷰를 지원 프로그램은 세그먼트의 집합 세그먼트: 메인 프로그램, 프로듀서, 함수, 메소드, 오브젝트, 로컬 변수, 글로벌 변수, 일반 블록, 스택, 심볼 테이블, 배열 등 논리적
메모리 과다 할당 상태(Over-allocating of memory): 필요한 메모리보다 프레임 수가 더 적은 경우 → 멀티 프로그래밍 시스템 내에서 사용자 프로세스 수가 증가할 때 발생페이지 폴트 처리 시 페이지 교체(page replacement) 추가 → 피지컬
메모리 할당 → 연속적Single: 메모리 영역을 한 번에 하나의 유저 프로그램만 사용 - 프로세스 하나 사용할 때 페이지 폴트가 일어나지 않을 수 있음. 컨텍스트 스위칭 할 때마다 페이지 폴트 발생Multiple: 멀티 프로그래밍 도입. 여러 개의 유저 프로그램이 부
커널 메모리 할당 방법프리 메모리 풀로부터 할당커널은 동적 사이즈 구조를 위한 메모리 요청커널 메모리는 연속적이어야 함(memory mapped I/O. 연속적 메모리 공간을 디바이스가 사용할 수 있도록 할당함. 기존의 페이지 할당 기법과는 달라야 하는 까닭)쌍을 지어