개요
클러스터형 시스템
- 하나의 저장소를 여러 computer가 공유하며 사용한다.
- 각 computer는 서로 연결되어있다.
운영체제 구조
단일 프로그래밍과 다중 프로그래밍
- 단일 프로그래밍
- 한번에 하나의 프로그램만 사용 가능하다.
- 다중 프로그래밍
- 한번에 여러 프로그램을 사용할 수 있다.
- 요즘 OS 방식이다.
시분할
- 시분할은 다중 프로그래밍의 논리적 확장이다.
- 시분할은 사용자가 컴퓨터의 자원을 효율적으로 공유하는 것이다.
- CPU가 다수의 작업들을 매우 빈번하게 교대로 실행하여, 사용자들은 자신의 작업을 할 수 있다.
다중 프로그래밍 시스템에서의 메모리 배치
운영체제 동작
- 현대 운영체제의 구동 방식은 인터럽트 구동 방식이다.
인터럽트 종류
- 하드웨어 생성 인터럽트
- 인터럽트 벡터를 통해 ISR 주소에 접근하는 등의 인터럽트 동작
- 소프트웨어 생성 인터럽트
- 예외 or 트랩에 의해 발생하는 인터럽트
- 예시
- 0으로 나누기, 유효하지 않은 메모리 접근
-
운영체제 서비스 요청
이중 동작 모드에서 자세히 설명한다.
이중 동작 모드 (Dual Mode)
- 이중 동작 모드를 통해, 운영체제와 다른 시스템 부분들을 보호한다.
- 모드 종류
- 사용자 모드
- 커널 모드
- 하드웨어 모드 비트
- 하드웨어의 하나의 비트를 통해, 모드를 구분한다.
- 하드웨어 모드 비트를 통해, 시스템이 ‘사용자 코드’ 와 ‘커널 코드’를 실행하는지 구별해준다.
-
운영체제 서비스 요청 인터럽트 동작 방식
위 방식으로 ‘운영체제 서비스 요청’ 인터럽트를 처리한다.
타이머
- 타이머는 무한 루프나 자원을 계속 사용하는 프로세스를 방지하기 위해 사용한다.
- 즉, OS에게 자원(CPU 등)을 돌려주지 않는 프로세스를 방지한다.
-
타이머는 지정된 시간 후에 인터럽트를 설정한다.
- 타이머 인터럽트 발생시
- 운영체제가 제어한다. (제어권이 다시 OS로 돌아온다.)
- 운영체제가 자원을 돌려주지 않은 프로세스를 오류로 간주해 프로그램을 중단하거나,
- 아니면 프로그램에게 더 많은 시간을 할당해준다.
- 운영체제가 제어한다. (제어권이 다시 OS로 돌아온다.)
프로세스
프로세스란?
- 실행 중인 프로그램
-
시스템에서 작업의 단위
- 프로그램 vs 프로세스
- 프로그램
- 수동적인 개체이다.
- 프로세스
- 능동적인 개체이다.
- 즉 프로그램이 메모리에 올라가면, 그것이 프로세스가 된다.
- 프로그램
- 프로세스는 업무 수행을 위한 자원이 필요하다.
- 프로세스 종료 후 재사용 가능한 자원은 회수한다.
운영체제의 관리 작업
프로세스 관리
운영체제는 프로세스 관리와 관련된 아래 작업들을 수행한다.
- 사용자(시스템) 프로세스 생성 및 제거
- CPU에 프로세스와 쓰레드 스케줄링
- 프로세스 일시 중지와 재실행
- 프로세스 동기화를 위한 기법 제공
- 프로세스 통신을 위한 기법 제공
- 데드락 처리를 위한 기법 제공
- 데드락: 프로세스끼리 서로 끝나기를 기다리는 (교착)상태
메모리 관리
운영체제는 메모리 관리와 관련된 아래 작업들을 수행한다.
- 현재 사용 중인 메모리 부분과 누가 사용 중인지 추적
- 어떤 프로세스를 메모리에 적재하고 제거할 것인가 결정
- 필요에 따라 메모리 공간을 할당하고 회수
파일 시스템 관리
- 파일 시스템 관리의 필요성
- 파일은 디렉터리로 분류되지만, 파일이 실제 HDD에 저장될 때 무작위 주소로 저장된다.
- 따라서, 이것을 시각적으로 정리하여 사용자에게 제공한다.
운영체제는 파일 시스템 관리와 관련된 아래 작업들을 수행한다.
- 파일과 디렉터리의 생성 및 제거
- 파일과 디렉터리를 조작하기 위한 권한 제공
- 파일을 보조 저장장치로 매핑
- 안정적인 저장매체에 파일 백업
- 안정적인 저장매체: 비휘발성 저장매체
대용량 저장장치 관리
운영체제는 대용량 저장장치 관리와 관련된 아래 작업들을 수행한다.
- 안 쓰는 공간 관리
- 저장 장소 할당
- 디스크 스케줄링
입출력 시스템 관리
- 사용자가 하드웨어의 특성을 잘 몰라도 되도록, 사용자로부터 특정 하드웨어 장치의 특성을 숨기는 역할을 운영체제가 수행한다.
운영체제는 입출력 관리와 관련된 아래 작업들을 수행한다.
- 버퍼링
- 자료 이동 중에 일시적인 자료 보관하는 것
- 캐싱
- 성능을 위해 자료의 일부분을 보관하는 것
- 스풀링
- 프린터와 같은 장치에서, 한 작업의 출력이 다른 작업의 출력과 동시에 작업할 수 있도록 하는 것
-
스풀링이 없다면
-
스풀링이 있다면
캐싱
캐싱 과정
캐시 동기화
- 다중처리기(멀티-프로세서) 환경에서는 ‘캐시 동기화(업데이트)’ 를 통해 ‘캐시의 일관성’ 을 유지하여 모든 CPU가 자신의 캐시에 최신 값을 가지고 있어야 한다.
- 캐시의 일관성을 유지하는 것이 분산환경에서 더욱 복잡해진다.
- 여러 computer가 자신이 갖는 캐시를 최신 값으로 업데이트해야한다.
- 이것을 OS가 처리해야한다.
보호와 보안
보호
- 컴퓨터 시스템이 정의한 자원에 대해 프로그램, 프로세스 또는 사용자들의 접근을 제어하는 기법
보안
- 외부 또는 내부의 공격을 방어하는 것
커널에서 쓰이는 자료구조
커널에서 사용되는 자료구조 종류
- Singly Linked List (단방향 연결리스트)
- Doubly Linked List (양방향 연결리스트)
- Circular Linked List (원형 연결리스트)
- Binary Search Tree (이진 탐색트리)
- 왼쪽 서브트리 ≤ 자신
- 오른쪽 서브트리 ≥ 자신
- HashFunction & HashMap (해시함수 & 해시맵)
P2P 컴퓨팅
P2P 컴퓨팅이란
- 분산 시스템의 모델 중 하나이다.
- P2P는 서버와 클라이언트를 구별하지 않는다.
- 즉, 모든 노드가 피어(동료)로 간주된다.
- 발견 프로토콜(discovery protocol)
- 클라이언트 피어는 원하는 서비스를 제공하는 노드를 찾는다.
- 서버 피어는 서비스 요청에 응답한다.
가상화 (Virtualization)
가상화란
- 하나의 H/W 위에 여러 OS를 동시에 독립적으로 구동하는 것이다.
Real-Time Embedded Systems
Real-Time Embedded System 이란
- 특별한 목적을 가진 시스템이다.
- 반드시 정해진 제약조건에 맞춰 작동해야한다.
Windows, Mac 등은 범용 시스템이다.
- 성결대학교 컴퓨터 공학과 강영명 교수님 (2021)
- Siberschatz et. al., 『Operating System Concepts 10th Ed.』