OS

Oak_Cassia·2022년 1월 25일
0

Operating system
하드웨어를 관리하는 소프트웨어
사용의 용이성을 위해 설계
자원 할당자(resource allocator)
제어 프로그램(control program)

Interrupts
CPU는 인터럽트 되면 하던 일을 중단하고 고정된 위치로 실행을 옮긴다.
그 위치는 인터럽트 서비스 루틴의 시작 위치를 가리킨다.
루틴 실행이 완료되면 인터럽트 되었던 연산을 재개
CPU에 Intuerrupt request line이 있다. 하나의 명령을 완료할 때 마다 검사한다.

CPU 및 인터럽트 컨트롤러 하드웨어
중요한 처리 중 인터럽트 처리 연기
장치의 적절한 인터럽트 핸들러로 효율적으로 디스패치할 방법 필요
우선순위로 구분하고 적절한 긴급도로 대응할 수 있도록, 다단계 인터럽트가 필요하다.

디스패치: CPU의 사용 권한을 프로세스에게 주는 것

인터럽트 요청 라인
nonmaskable interrupt: 복구할 수 없는 메모리 오류와 같은 이벤트
maskable interrupt: 중요한 명령 시퀀스를 실행하기 전 CPU에 의해 꺼질 수 있다.

부트 스트랩 프로그램
전원을 켤때 가장 먼저 실행되는 프로그램
전기적으로 소거 가능한 프로그램 가능 읽기 전용 메모리(EEPROM)에 저장

Multiprocessor Systems
SMP(symmetric multiprocessng): 시스템 버스를 통해 물리 메모리 공유
NUMA(non-uniform memory access): 모든 CPU가 공유 시스템 연결로 연결. 모든 CPU가 로컬 메모리 보유
Clustered System: 약결합, 높은 가용성, 우아한 성능 저하, 결합 허용 시스템, 비대칭형, 대칭형, 네트워크로 다수의 컴퓨터 시스템 연결

시스템 데몬: 커널이 실행되는 전체 시간 동안 실행되는 프로그램

커널:운영 체제의 핵심,시스템의 모든 것을 완전히 통제하는 프로그램

Multiprograming: CPU가 항상 한 개는 실행할 수 있도록 구성
프로세스: 실행 중인 프로그램
다중 태스킹: multiprograming의 논리적 확장, 빠른 전환율로 여러 프로세스를 동시에 실행하는 것으로 착각

Dual-Mode and Multimode Operation
운영체제를 보호
사용자 모드와 커널 모드(수퍼바이저, 시스템 특권 모드)
모드 비트 0: 커널, 1: 사용자
사용자 프로세스가 필요하면 운영체제에 요청, 커널 모드로 변환 및 처리 후 복귀

timer: 지정 시간 후 인터럽트 하도록 설정
가변 타이머: fixed-rate clock과 계수기로 구현. 사용자에게 제어 양도 전 타이머 설정 확인

virtualization
단일 컴퓨터의 하드웨어를 여러가지 실행 환경으로 추상화
VMM(virtual machine monitor): 게스트 운영체제 수행. 게스트 서로로 부터 보호

전통적 컴퓨팅, 모바일 컴퓨팅, 클라이언트 서버 컴퓨팅(계산-서버=DB, 파일-서버=웹), peer to peer(노드 끼리), cloud computing, 실시간 임베디드 시스템

운영체제 서비스: UI, program execution, I/O oepration, file system manipulation, communication, error detection, rsource allocation, logging, protection, security

System Calls
OS에 의해 사용가능하게 된 서비스에 대한 인터페이스 제공
저수준 작업은 어셈블리어로 작성되어야 하지만 호출은 C/C++로 한다.

API(Application Programming Interface)
각 함수에 전달되는 매개변수의 값과 응용 프ㅗ그래머가 사용 가능한 함수의 집합을 명시한다. 응용 프로그램에서 특정 기능 지정, 시스템 콜 대신 호출

RTE(실행시간 환경)
시스템 콜 인터페이스 제공

Types of system calls: 프로세스 제어, 파일 조작, 장치 조작 정보 유지 보수, 통신, 보호

Loaders: 이진 실행 파일을 메모리에 적재하는데 사용. CPU 코어에서 사용할 수 있는 상태가 된다.

DLL: dynamic linked library, 라이브러리가 필요할 때, 실행시간에 동적으로 적재, 메모리 절약

ABI(application binary interface)
OS와 아키텍처의 상호작용하는 방법

OS-design Goal: 사용자 목적, 시스템 목적

기법과 정책: 기법으로 부터 정책을 분리해야 한다.
mechanism(기법): 어떻게 할 것인가를 결정
policies(정책): 무엇을 할 것인가를 결정

OS structure
Monolithic structure: 커널의 모든 기능을 단일 주소 공간에 실행되는 정적 이진 파일에 넣는 것. 단순하고 빠르지만(시스템 콜 인터페이스의 오버헤드가 거의 없다.) 구현 및 확장이 어렵다.

Layered Approach: OS를 여러 층으로 나눈다. 최하위 츠은 HW. 최상위 층은 사용자 인터페이스이다. 각 층은 자신보다 하위 수준에 의해 제공되는 연산만 사용해 구현한다. 각 층 정보 은닉. 층이 많으면 오버헤드도 많다.

Micro kernels: 중요하지 않은 구성요소를 별도의 주소공간에 존재하는 사용자 수준 프로그램으로 구현. 확장이 쉽다. 시스템 기능 오버헤드가 크다.

Modules: LKM(loadable kernel modules)기법 사용. 부팅 혹은 실행 중에 부가적인 서비스들을 모듈을 통해 링크. 보호된 인터페이스. 모듈에서 임의의 다른 모듈 호출. 메시지 전달 필요 X

Hybrid system: Linux(모놀리식+모듈), Windows(모놀리식+모듈+마이크로 커널)

System Boot
부팅: 커널을 적재하여 컴퓨터를 시작하는 과정
부트스트랩 프로그램 또느 부트로더로 불리는 작은 코드가 커널의 위치를 찾는다.
커널이 메모리에 적재되고 시작된다.
커널은 하드웨어를 초기화 한다.
루트 파일 시스템이 마운트 된다.
Bios라는 소형 부트로더가 부트 블록이라는 두 번째 부트로더 적재
UEFI(unified extensible firmware interface)로 대체. 완전한 부팅관리자. 빠르다.
Debugging: 병목현상 제거. 성능 조정, 로그 파일, 코어(메모리)덤프, 크래시(커널 장애), 크래시 덤프

profile
rust로 뭐할까

0개의 댓글