저장장치 계층 구조

  • 저장장치 시스템은 다음과 같은 조건으로 계층 구조를 형성함
    • 속도
    • 비용
    • 휘발성 여부
  • 캐싱: 더 빠른 저장장치로 정보를 복사하는 기법, 메인 메모리를 보조 저장장치의 캐시로 볼 수 있음
  • 입출력을 관리하기 위해 장치마다 장치 드라이버가 존재
    • 제어기와 커널 사이의 일관된 인터페이스를 제공

캐싱

  • 더 빠른 저장장치로 정보를 복사하는 기법, 메인 메모리를 보조 저장장치의 캐시로 볼 수 있음
  • 중요한 원칙
    • 하드웨어, 운영체제, 소프트웨어 등 컴퓨터의 많은 레벨에서 수행된다.
  • 사용 중인 정보는 느린 장치에서 빠른 장치로 임시적으로 복사된다.
  • 빠른 저장장치(캐시)는 우선 원하는 정보가 이미 존재하고 있는지 점검한다
    • 존재하면, 캐시에서 직접 사용된다.
    • 존재하지 않으면, 데이터를 캐시로 가져와서 캐시에서 사용된다.
  • 캐시는 데이터가 오는 소스 저장장치 보다 용략은 적다
    • 캐시 관리는 중요한 설계 사항
    • 캐시 용량과 교체 정책

직접 메모리 접근 구조

  • 메인 메모리 속도에 근접한 속도로 정보를 전송할 수 있는 고속 입출력 장치를 위해 사용되는 기법
  • 장치 제어기는 데이터 블록을 장치의 버퍼에서 메인 메모리로 CPU를 개입시키지 않고 직접 전송한다.
  • 바이트가 전송될 때마다 인터럽트를 발생시키지 않고 블록의 전송이 끝날 때마다 하나의 인터럽트만 발생시킨다.
  • 입출력 장치가 동시에 메모리를 입출력하는 경우는 없다.

컴퓨터 시스템 구조

  • 대부분의 시스템은 하나의 범용 CPU를 사용한다
    • 대부분의 시스템은 또한 전용 CPU도 가지고 있다
  • 다중처리기 시스템의 사용과 중요성이 점점 증가하고 있음
    • 병렬 시스템, 밑결합 시스템이라고 불림
    • 장점
      • 증가된 처리량
      • 규모의 경제
      • 증가된 신뢰성: 우하한 퇴보 또는 결함 허용
    • 두 가지 형태
      • 비대칭 다중처리: 각 처리기가 특별한 임무를 수행한다.
      • 대칭 다중처리: 각 처리기는 공통적인 임무를 수행한다.

대칭 다중처리 구조

  • 캐쉬를 사용해서 빠르게 데이터를 접근이 가능
    • 단 데이터의 일관성을 유지하기 어려움
  • 외부버스를 공용하기 때문에 불편한 순간이 존재
  • 한개의 버스를 이용하여 CPU가 공통의 메모리에 순차적으로 접근(동시 접근은 불가능)

이중 코어 디자인

  • 내부의 캐시를 통해 데이터를 공유 하는 가능 (단 상대적으로 열을 더 많이 발생)
    • 한개의 버스를 이용하여 CPU가 공통의 메모리에 순차적으로 접근 할 때 생기는 오버헤드를 줄일 수 있다.

클러스터 시스템

  • 다중처리기 시스템과 같이 여러 개의 시스템도 같이 작업할 수 있다
    • 보통 storage-area network (SAN)를 통하여 저장장치를 공유
    • 실패해도 지속할 수 있는 고가용 서비스 제공
      • 비대칭 클러스터링에서는 기기하나가 대기 상태로 들어가 다른 기기들이 사용하다 문제가 발생하면 대기 상태가 해제되어 해당 문제를 해결하는데 사용 
      • 대칭 클러스터링에서는 모든 기기들이 응용프로그램을 실행하고 서로를 모니터링함
    • 일부 클러스터는 고성능 컴퓨팅 환경을 제공
      • 응용프로그램은 병렬처리가 가능하도록 작성되어야 함
    • 일부 클러스터는 분산 락 관리자를 제공하여 상충하는 연산을 피한다

운영체제 구조

  • 다중프로그래밍(일괄처리 시스템: 순차적으로 처리)은 효율이 중요
    • 메인메모리에 여러 사용자 프로그램이 상주 가능한 것 
    • 한 명의 사용자가 CPU와 입출력 장치를 항상 작동하게 만들 수 없다.
    • 다중프로그래밍은 CPU가 항상 하나의 작업을 수행할 수 있도록 여러 작업들을(코드와 데이터)배치한다.
    • 전체 작업의 부분집합이 메모리에 적재되어 유지된다
    • 작업 스케줄링이 실행할 작업을 선택한다
    • 실행 중인 작업이 무언가를 기다려야 한다면 운영체제는 다른 작업으로 전환한다.
  • 따라서 사용자는 각 직업과 상호 작용 할 수 있고 대화식 컴퓨팅 환경을 만들게 된다.
    • 응답시간: 1초 미만이어야 한다
    • 각 사용자는 메모리에 실행 중인 프로그램(프로세스)을 적어도 하나는 가지고 있어야 한다.
    • 동시에 여러 작업이 실행할 준비가 되어 있다면 → CPU scheduling
      • 배치: 배치 처리 시스템은 큐 자료구조와 같은 FIFO 방식이며 한번데 등록된 여러 프로그램들을 컴퓨터 프로그램의 실행 요청 순서에 따라 순차적으로 실행하는 방식이다. 
      • 시분할: CPU가 빈번하게 다른 작업으로 전환하도록 논리적으로 확장한 것
    • 프로세스를 전부 메모리에 적재할 수 없다면메모리에 들이거나 내보낸다(스와핑)
    • 가상메모리는 전체가 메모리에 적재되지 않은 프로세스의 실행을 가능하게 한다.
    운영체제 연산
    • 인터럽트 구동
      • 장치가 발생시키는 하드웨어 인터럽트(우선 순위 높음)
        • 약간의 여유가 있음 기존에 하던 일을 마치고 처리함 (중요성 상대적으로 낮음)
      • 소프트웨어 인터럽트(exception or trap): (우선 순위 낮음)
        • 해당 exception 발생시 하던 일을 도중에 그만두고 해당 exception을 처리해야 함 (중요성 상대적으로 높음) 
        • 소프트웨어 오류
        • 운영체제 서비스 요청
        • 다른 프로세스 문제
    • 이중 모드 연산은 OS가 자기자신을 다른 시스템 구성요소로부터 보호할 수 있게 한다
      • User mode(유저 모드) and kernel mode(커널 모드)
      • Mode bit(하드웨어가 제공)
        • 시스템이 사용자 코드 혹은 커널 코드를 실행하고 있는지 구분할 수 있게 만든다
        • 일부 명령어는 특권 명령어로 지정되어 있어 커널 모드에서만 실행가능하다
        • 시스템 호출은 모드를 커널 모드로 전환하고 호출에서 복귀할 때 사용자 모드로 되돌아 간다
      • 다중 모드 연산을 지원하기 위해서 CPU의 지원이 더 필요하게 됨
        • 가상머신관리자 필요

사용자 모드에서 커널 모드로 변환

  • 커널모드에 접근 할 수 있는 최대 프로세스의 개수는 최대 한 개 밖에 되지 않는다 따라서 타이머가 필요
  • 무한 루프, 프로세스 자원 독점을 방지하기 위한 타이머
    • 일정 주기마다 컴퓨터에 인터럽트를 발생시키도록 타이머 세팅
    • 물리적인 클럭에 의해 감소되는 카운터 유지
    • 운영체제가 카운터 세팅(특권 명령어)
    • 카운터가 0이 되면 인터럽트 발생
    • 스케줄링 프로세스가 제어권을 다시 획득하기 전에 혹은 할당된 시간을 모두 소모한 프로그램을 종료시키기 전에 셋업되어야 함

프로세스 관리

  • 프로세스는 실행 중인 프로그램이다. 시스템 안에서 작업의 단위가 된다. 프로그램은 수동적인 개체이고 프로세스는 능동적인 개체이다.
  • 프로세스는 자신의 업무를 수행하기 위해서는 자원이 필요하다
    • CPU, 메모리, I/O, 파일
    • 초기화를 위한 데이터
  • 하나의 프로세스는 여러개의 스레드가 존재 할 수 있다.
    • 스레드: 규모가 작은 프로세스
  • 프로세스가 종료될 때에는 재사용이 가능한 모든 자원을 반납해야 한다.
  • 단일 스레드 프로세스는 하나의 프로그램 카운터를 가진다
    • 프로그램 카운터는 다음에 실행할 명령어의 주소를 저장한다
    • 프로세스는 명령어를 순차적으로 한 번에 하나씩 완료될때까지 실행한다
  • 다중스레드 프로세스는 스레드 마다 하나의 프로그램 카운터를 가진다
  • 보통 시스템에는 많은 프로세스가 존재한다.
    • 일부는 사용자 프로세스, 일부는 운영체제 프로세스
    • 이들은 하나 이상으 CPU에서 실행된다
    • CPU를 프로세스/스레드에 다중 배정함으로써 병행성을 얻는다.

프로세스 관리 활동

  • 사용자와 시스템 프로세스를 생성하고 제거하기
    • 데드락 상태(프로세스 들이 영원히 교착상태)일때는 프로세스 제거가 필요함
  • 프로세스의 실행을 중단시키고 다시 시작시키기
  • 프로세스끼리 동기화 할 수 있는 기법 제공
  • 프로세스끼리 통신할 수 있는 기법 제공
  • 교착상태를 처리하기 위한 기법 제공

메모리 관리

  • 프로그램을 실행하기 위해서는 명령어 전체 혹은 일부가 메모리에 있어야 한다.
  • 프로그램 실행에 필요한 데이터 전체 또는 일부가 메모리에 있어야 한다
  • 메모리 관리는 프로그램의 어느 부분이 언제 메모리에 적재될 것인지 결정
    • CPU 이용률을 최적화 하고 사용자에게 빠른 응답시간을 보장해야 위해
  • 메모리 관리 활동
    • 프로세스에 의해 사용 중인 메모리 영역 추적
    • 어느 프로세스와 데이터를 메모리에 적재하거나 내보낼지 결정
    • 필요에 따라 메모리를 할당하고 반환

저장장치 관리

  • OS는 저장장치의 일관되고 논리적인 모습 제공
    • 물리적인 특성을 제거하여 논리적인 저장 단위인 파일 제공
    • 각 매체는 장치에 의해 제어된다(드라이버)
      • 접근속도, 데이터 전송률, 접근 방식 등 다양한 속성이 있음
  • 파일시스템 관리
    • 파일은 보통 디렉터리 단위로 구성도니다
    • 접근 제어는 누가 무엇에 접근할 수 있는지 결정한다
    • 운영체제의 활동은 다음과 같다
      • 파일과 디렉터리 생성과 삭제
      • 파일과 디렉터리를 조작하기 위한 기본 기능 제공
      • 파일을 보조 저장장치에 매핑
      • 신뢰할 수 있는(비휘발성) 저장장치에 파일 백업하기

대용량 저장장치 관리

  • 오랜 시간 동안 보존해야 할 데이터를 디스크에 저장한다
  • 컴퓨터 연산의 전체 속도는 디스크 서브시스템과 알고리즘에 전적으로 달려 있다
  • 운영체제 활동
    • 빈 공간 관
    • 저장장치 할당
    • 디스크 스케줄링
  • 일부 저장장치는 빠를 필요가 없다
    • 3차 저장장치에는 optical storage, magnetic tape 등이 있다
    • 물론 운영체제와 응용프로그램이 관리해야 한다
    • 다양한 저장 매체가 존재
      • WORM: 한번 작성하면 여러번 읽을 수 있다.
      • RW: 읽고 쓰기가 가능

입출력 서브시스템

  • OS의 목적 중 하나는 하드웨어 장치의 특이점을 사용자에게 숨기는 것이다
  • I/O 서브 시스템의 임무
    • 버퍼링(데이터 전송 중 임시 저장)
    • 캐싱(성능 향상을 위해 더 빠른 저장소에 데이터 자장)
    • 스풀링(한 작업의 출력과 다른 작업 입력의 중첩)을 포함한 I/O 메모리 관리
    • 범용 장치 드라이버 인터페이스
    • 특정 하드웨어 장치 드라이버

보호와 보안

  • 보호: OS에서 정의한 리소스에 프로세스 또는 사용자가 엑세스하는 것을 제어하는 모든 메커니즘
  • 보안: 내부 및 외부 공격에 대한 시스템 방어
    • 서비스 거부, 윔, 바이러스, 신분 도용, 서비스 절도 등 큰 범위
  • 시스템은 일반적으로 사용자를 구분하여 누가 무엇을 할 수 있는지 결정한다
    • 사용자 식별자에는 이름 및 연동된 번호가 있고 사용자 당 하나씩 할당된다
    • 엑세스 제어를 결정하기 위해 해당 사용자의 모드 파일과 프로세스에 사용된 ID가 연결된다.
    • 그룹 식별자 (그룹 ID)를 통해 사용자 집합을 정의하고 관리 할 수 있으며 각 프로세스, 파일과도 연결된다
    • 권한 상승은 더 많은 권을 가진 유효 ID로 변경할 수 있게 한다.

커널 자료구조

  • 일반적인 프로그램 자료구조와 매우 유사
  • 이진 탐색 트리(left≤right)
    • 탐색 성능은 O(n)
    • 균형 이진 탐색 트리는 O(log n)
  • 해시 함수는 해시 맵을 생성한다
  • 비트맵: n개 항목의 상태를 나타내는 n개의 이진 비트열
  • Linux 자료구조는 다음 파일에 정의되어 있음 <linux/list.h>,<linux/kfifo.h>,<linux/rbtree.h>

'CS > OS' 카테고리의 다른 글

CPU 스케줄링 기준  (0) 2023.04.17
식사하는 철학자 문제  (0) 2023.04.11
프로세스  (0) 2023.03.20
운영체제 구조  (0) 2023.03.13
운영체제  (0) 2023.03.06

+ Recent posts