CPU 이용률(utilization)

  • 가능한 CPU를 최대한 바쁘게 유지
  • 대부분의 운영체제가 이용률 100%를 달성하기 위해 노력하고 있음

처리량(throughput)

  • 단위 시간당 완료된 프레스의 개수

총처리 시간(turnaround time)

  • 프로세스가 제출되고 완료되기 까지의 시간 간격
  • 결과를 확인하기 위해 엔터키를 쳤을때 화면에 나타나기 까지 걸리는 시간
  • 응답시간 + 대기시간

대기 시간(waiting time)

  • 준비 완료 큐에서 대기하면서 보낸 시간의 합

응답 시간(response time)

  • 요구를 제출한 후 첫 번째 응답이 나올때까지의 시간
  • 시분할 환경
  • 단 응답을 출력하는 데 걸리는 시간은 아

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

CPU 스케줄링1  (0) 2023.04.18
CPU 스케줄링 알고리즘  (0) 2023.04.18
식사하는 철학자 문제  (0) 2023.04.11
프로세스  (0) 2023.03.20
운영체제 구조  (0) 2023.03.13

<운영체제에서의 고전적인 동기화 문제>

식탁에 생각하고 먹으면서 생애를 보내는 철학자 5명이 둘려 앉고 

가운데에 음식이 있고 젓가락의 갯수는 철학자의 수와 동일하다. 

철학자는 음식을 집어 먹기 위해서는 젓가락 2개를 잡아야 한다.

+ 이미 옆 사람 손에 들어간 젓가락을 집을 수는 없다.

 

RICE: 공유 자원

철학자: 프로세스

밥을 먹는 것: 작업을 하기 위해 필요한 공유 자원을 이용하는 행위

젓가락: 세마포

밥을 먹지 못해 굶어 죽는 것: 기아

 

+& 세마포란?

  • 세마포어(Semaphore)는 상호 배제, 동기화, 임계 영역 등 다중 프로세스 간 동기화 문제를 해결하기 위해 사용되는 동기화 도구를 말한다.
  • 세마포어는 wait()과 signal()이라는 두 개의 연산으로 이루어져 있으며 wait() 연산은 세마포어 값을 감소시키고, 값이 0보다 작아지면 해당 프로세스는 블록된다. signal() 연산은 세마포어 값을 증가시키고, 이를 기다리는 다른 프로세스가 있다면 하나를 깨우게 된다.

 

문제점: 만약 모든 철학자가 배가고파 자기 오른쪽에 있는 젓가락을 집는다면 모두가 밥을 먹지 못 하고 기다려야 하는 (교착 상태)상황이 일어나게 된다. 

 

<해결법>

  1. 철학자의 수를 줄인다 (프로세스의 수 감소)
  2. 한 철학자가 젓가락 두 개를 모두 집을 수 있을 때만 젓가락을 집도록 허용한다. (임계구역 안에서만 작업 - 모니터)
  3. 비대칭 해결안: 홀수 번호의 철학자는 왼쪽 젓가락 먼저 집고 짝수 번호의 철학자는 오른쪽 젓가락을 먼져 집도록 하여 모두가 젓가락을 하나씩만 잡은 상황을 방지한다. (알고리즘 적 해결)

 

 

 

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

CPU 스케줄링 알고리즘  (0) 2023.04.18
CPU 스케줄링 기준  (0) 2023.04.17
프로세스  (0) 2023.03.20
운영체제 구조  (0) 2023.03.13
저장장치 계층 구조  (5) 2023.03.13

프로세스의 개념

  • 배치 시스템 - 잡(jobs)
    • 도착한 순서대로 작업을 처리하는 것
  • 시분할 시스템 - 사용자 프로그램 또는 테스크
    • cpu 라는 자원을 여러명의 사용자가 나누어 쓰는 것
  • 프로세스: 실행 중인 프로그램, 프로세스의 실행은 순차적 형태로 진행 되어야만 한다.
  • 다양한 부분으로 이루어짐
    • 프로그램 코드, 텍스트 섹션 이라고 불림
    • 프로그램 카운터와 프로세스 레지스터를 포함한 현재 진행 중인 활동
    • 임시 데이터를 저장하는 스택
      • 함수 매개변수, 복귀 주소, 지역 변수
    • 전역 변수를 저장하는 데이터 섹션
    • 실행 중 동적으로 할당되는 메모리 영역인
  • 하나의 프로그램에서 여러 개의 프로세스를 만들 수 있다.

메모리에서의 프로세스

프로세스 상태

  • 프로세스가 실행되면서 상태가 계속 변한다.
    • new: 프로세스가 생성되는 중인 상태
    • running: 명령어가 실행 중인 상태
    • wailting(sleep): 프로세스가 어떤 사건이 일어나기를 기다리고 있는 상태
      • ready와 비슷
    • ready: 프로세스가 처리기가 할당되기를 기다리고 있는 상태
    • terminated: 프로세스가 실행을 완료한 상태

프로세스 제어 블록 (PCB)

  • 태스크 제어 블록(task control block)이라고도 불림)
  • 프로세스의 상태, 프로그램 카운터, CPU레지스터, CPU스케줄링 정보, 메모리 관리 정보, 회계정보, I/O 상태 정보가 저장되어 있음.

스레드

  • 하나의 프로세스가 여러개의 스레드로 구성될 수 있다
  • 프로세스 마다 여러 개의 프로그램 카운터를 가지는 경우
    • 여러 위치에서 동시에 실행시키기 위해서 복수의 스레드를 사용한다.

프로세스 스케줄링

  • CPU 사용을 최대로 하는 것이 목표, 시간을 나누어 쓰기 위해 CPU에 프로세스를 빠르게 전환시킨다.
  • 프로세스의 스케줄링에는 여러 종류의 큐가 존재한다.
    • 잡 큐: 시스템의 모든 프로세스의 집합
    • 준비 큐: 메인 메모리에 존재하고 실행을 기다리며 준비된 모든 프로세스의 집합
    • 장치 큐: I/O 장치를 기다리고 있는 프로세스의 집합
  • 큐잉 다이어 그램: 큐, 자원, 프로세스의 이동 흐름을 나타낸다.

스케줄러

  • 단기 스케줄러(cpu 스케줄러): 어떤 프로세스에게 어떤 cpu를 사용할지 배정시키는 스케줄러
    • 주로 cpu 할당
    • 자주 발생
  • 장기 스케줄러(잡 스케줄러): 어떤 프로세스를 시스템 안으로 가져올 것인가를 결정하는 스케줄러
    • 다중프로그래밍의 정도를 결정한다.
    • 상대적으로 덜 자주 발생
  • 중기 스케줄러: 메모리에 적재된 프로세스를 제거하고(swap out) 추가하는 것(swap in)을 즉 swapping을 결정하는 스케줄러
    • 다중프로그래밍 정도를 낮출 필요가 있을 때 사용

이동 시스템(스마트폰)에서의 다중태스킹

  • ios 초기에는 하나의 프로세스만 실행이 가능했지만 요즘날에는 복수의 프로세스가 실행되는 것이 가능
  • foreground 프로세스: 사용자 인터페이스에 의해 제어됨
  • background 프로세스: 메모리에 적재되어 실행 중이지만 화면에는 보이지 않는다.

문맥 교환

  • CPU가 다른 프로세스로 전환할 때, 시스템은 문맥 교환을 통하여 예전 프로세스의 상태를 저장하고 새 프로세스의 저장된 문맥을 적재해야 한다.
    • 이때 걸리는 시간을 컨텍스트 스위칭 오버헤드(문맥교환)라고 한다.
  • 이때 예전 프로세스의 상태는 PCB에 표현된다.
  • 운영체제와 PCB가 복잡할수록 문맥 교환 시간은 더 길어진다.

프로세스에 대한 연산

  • 프로세스 생성
    • 부모 프로세스는 운영체제가 허용하는 범위 안에서 자식 프로세스를 필요한 만큼 생성이 가능하다.
    • 프로세스는 탄생시 프로세스 식별자를 부여 받는다
    • 주소 공간
      • 자식은 부모 프로세스의 주소 공간을 복제한다.
      • 자식은 그 공간에 프로그램을 적재한다.
    • 부모와 자식의 자원 공유 옵션
      • 부모와 자식은 모든 자원을 공유한다.
        • 자식이 새롭게 자원을 확보하면 운영체제의 허락하에 부모가 자식의 자원을 공유하는 것이 가능하다.
      • 자식과 부모는 운영체제가 허용하는 범위 안에서만 자원을 공유한다.
      • 부모와 자식은 아무 자원도 공유하지 않는다.
    • 실행 옵션
      • 부모는 자식이 종료될 때까지 기다린다.
      • 부모와 자식은 병행하게 실행된다.

프로세스 종료

  • wait(): 부모가 자식의 종료를 기다릴 필요가 있을 때 사용하는 시스템 콜
  • 기다리고 있는 부모가 없는 프로세스를 좀비(zombie)라고 한다.
  • wait를 호출하지 않고 부모가 종료된 프로세스를 고아(orphan)라고 한다.

프로세스 간 통신

  • 시스템 내의 프로세스는 독립적이거나 협력적 일 수 있다.
  • 협력적 프로세스가 필요한 이유:
    • 정보 공유
    • 계산 속도 향상
    • 모듈성
    • 편리함
  • 협력적인 프로세스는 IPC(프로세스 간 통신)이 필요하다.
  • IPC의 두 가지 모델
    • 공유 메모리
      • 두 프로세스 사이의 공유하는 메모리를 만들어 서로의 작업을 공유
      • 상대적으로 속도가 빠름(단 멀티 코어나 멀티 프로세스 환경에서는 속도가 느려질 수 있음 Why? 메모리 일관성 때문에)
    • 메시지 전달
      • 메시지 큐에 저장된 정보를 쓰고 읽는 식으로 메시지 전달
      • 상대적으로 속도가 느림

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

CPU 스케줄링 기준  (0) 2023.04.17
식사하는 철학자 문제  (0) 2023.04.11
운영체제 구조  (0) 2023.03.13
저장장치 계층 구조  (5) 2023.03.13
운영체제  (0) 2023.03.06

운영체제 서비스

  • 프로그램 실행환경과 프로그램을 실행되도록 하는 서비스를 제공해 준다
    • 사용자 인터페이스(UI)
    • I/O 작업 (입출력 기능)
    • 프로그램 실행
    • 파일 시스템 조작: 디렉토리 읽기, 쓰기, 삭제, 탐색, 나열
    • 통신(컴퓨터 간의 통신)
    • 오류감지
    • 자원할당(한정된 자원(CPU 사이클, 저장장치, I/O장치)을 고르게 분배)
    • 회계(어떤 종류의 자원을 얼마나 많이 사용했는지 분석)
    • 보호 및 보안

사용자 운영체제 인터페이스 CLI(명령 해석기)

  • 때로는 커널에 때로는 시스템 프로그램으로 구현
  • 주로 사용자로부터 명령을 입력 받아 실행한다
  • 내장된 명령어 때로는 프로그램 이름이 입력됨 ex: java —version

시스템 콜

  • OS가 제공하는 서비스를 사용할 수 있게 하는 프로그램밍 인터페이스
  • 주로 시스템 콜을 직접 호출하지 않고 고수준 API를 통해 프로그램에 엑세스
  • 예시: 파일복사
    • 시스템에서 파일 내용 확인
    • 입력 파일 오픈
    • 출력 파일이 없다면 생성 후 열기
    • 파일의 한 블럭 단위로 반복하여 내용 전달
    • 출력 파일 닫기
  • 구현: API를 준수하고 호출 결과 OS가 어떤 작업을 수행하는지 이해하기만 하면 된다

시스템 콜 매개변수 전달 방법3가지

  • 레지스터에 매개변수 전달
  • 메모리의 블록 또는 테이블에 실제 매개변수 저장, 그 불록의 주소를 레지스터에 저장하여 매개변수로 전달
  • 프로그램은 매개변수를 스택에 push해서 전달하고 운영체제는 pop하여 매개변수를 얻는다
  • 블록 및 스택 방법은 전달되는 매개변수의 개수 또는 길이를 제한하지 않는다.

시스템 콜의 종류

  • 프로세스 제어
    • 프로세스 생성, 종료
    • 프로세스 중지
    • 프로세스 코드를 메모리로 적재
    • 프로세스 속성 가져오기
    • 메모리 할당, 메모리 반환
    • 오류 발생시 현재까지 수행한 나용을 메모리에 덤프
    • 버그를 찾기 위한 디버그 실행
    • 프로세스가 공유하는 데이터 접근을 관리하기 위한 Lock
  • 파일 관리
    • 파일 생성 삭제 쓰기 읽기
    • 파일 속성 가져오기 세팅하기
  • 장치 관리
    • 장치 요청 해제 읽기 쓰기 접근 위치 재조정
    • 장치 속성 가져오기 세팅하기
    • 논리적으로 부착 분리 시키기
  • 정보 유지 관리
    • 현재 시간 및 날짜 얻기 세팅하기
    • 시스템 날짜 얻기, 세팅하기
    • 프로세스, 파일, 및 장치 속성 얻기, 세팅하기
  • 통신
    • 통신 연결 생성, 삭제
    • 메시지 전달 모델을 사용한다면 호스트 이름 또는 프로세스 이름을 명시하여 메시지 송신 또는 수신
      • 클라이언트에서 서버로
    • 현재 상태 정보 전송
  • 보호
    • 자원에 대한 접근 제어
    • 권한 획득 및 세팅
    • 사용자 접근 허용 및 거부

운영체제 서비스

  • 프로그램 실행환경과 프로그램을 실행되도록 하는 서비스를 제공해 준다
    • 사용자 인터페이스(UI)
    • I/O 작업 (입출력 기능)
    • 프로그램 실행
    • 파일 시스템 조작: 디렉토리 읽기, 쓰기, 삭제, 탐색, 나열
    • 통신(컴퓨터 간의 통신)
    • 오류감지
    • 자원할당(한정된 자원(CPU 사이클, 저장장치, I/O장치)을 고르게 분배)
    • 회계(어떤 종류의 자원을 얼마나 많이 사용했는지 분석)
    • 보호 및 보안

사용자 운영체제 인터페이스 CLI(명령 해석기)

  • 때로는 커널에 때로는 시스템 프로그램으로 구현
  • 주로 사용자로부터 명령을 입력 받아 실행한다
  • 내장된 명령어 때로는 프로그램 이름이 입력됨 ex: java —version
  •  

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

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

저장장치 계층 구조

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

캐싱

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

직접 메모리 접근 구조

  • 메인 메모리 속도에 근접한 속도로 정보를 전송할 수 있는 고속 입출력 장치를 위해 사용되는 기법
  • 장치 제어기는 데이터 블록을 장치의 버퍼에서 메인 메모리로 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

운영체제란 무엇인가?

  • 컴퓨터 사용자와 컴퓨터 하드웨어 사이의 중개자 역활을 하는 프로그램

운영체제의 목표

  • 사용자 프로그램을 실행하고 사용자 문제를 보다 쉽게 해결할 수 있도록 하자
  • 컴퓨터 시스템을 사용하기 편리하게 만들자
  • 컴퓨터 하드웨어를 효율적으로 사용하자

컴퓨터 시스템 구조

  • 하드웨어
    • CPU
    • 메모리
    • I/O 장치
  • 운영체제: 다양한 응용 프로그램 및 사용자 간의 하드웨어 사용을 제어하고 조정합니다.
  • 응용프로그램: 워드, 컴파일러, 웹 브라우저, 데이터베이스 시스템, 비디오 게임
  • 사용자: 사람, 기계, 다른 컴퓨터

운영체제가 하는 일

  • 자원의 이용률을 관리한다.
  • 워크스테이션의 전용 자원과 서버가 제공하는 공유 자원을 효율적으로 사용 하도록 한다.
  • 관점에 따라 달라진다

운영체제의 정의

  • 모든 사람들이 받아들이는 정의는 없다.
  • OS는 자원 할당기
    • 모든 자원을 관리: cpu, 메모리, 입출력 장치
    • 효율과 공정한 자원 사용을 목적으로 하는 상충된 요구 사이에서 결정
  • OS는 제어 프로그램
  • 운영체제를 주문했을 때 판매자가 배송하는 모든 것
  • 컴퓨터에서 항상 실행되는 유일한 프로그램을 커널이라고 한다.
  • 그 외 다른 모든 것들은
    • 시스템 프로그램(운영체제와 같이 배송됨)이거나
    • 응용프로그램
  • 커널 + 시스템 프로그램 + 응용프로그램

컴퓨터 시동

  • 부트스트램 프로그램이 전원이 공급되는 시점 혹은 다시 부트될 때 적재된다
    • 통상 ROM 또는 EPROM에 저장되고 펌웨어라고 불림
    • 시스템의 모든 구성을 초기화 한다.
    • 운영체제 커널을 적재 시킨 후 커널을 실행 시킨다.

컴퓨터 시스템 구성

  • 하나 이상의 CPU와 장치 제어기
    • 공유 메모리에 접근할 수 있도록 공통 버스로 연결되어 있다.
    • CPU와 장치는 병행 수행하기 때문에 메모리를 사용하기 위해 경쟁함
      • 동시에 접근 불가능

컴퓨터 시스템 연산

  • 입출력 장치와 CPU는 병행 실행된다
  • 각 장치 제어기는 특정 유형의 장치를 책임진다
  • 각 장치 제어기는 지역 버퍼를 가진다.
  • CPU는 메인 메모리는로 지역 버퍼(캐쉬 메모리) 혹은 지역 버퍼에서 메인 메모리로 데이터를 이동한다.
  • 입출력은 장치에서 제어기의 지역 버퍼로 데이터를 이동하는 것이다
  • 장치 제어기는 인터럽터를 발생시켜 CPU에게 연산이 끝났음을 알린다.

인터럽트의 공통 기능

  • 인터럽트는 인터럽트 서비스 루틴에게 제어권을 넘긴다.
    • 종류별로 서비스 루틴이 다를 수 있으며
    • 모든 서비스 루틴의 주소를 저장하고 있는 자료구조를 인터럽트 벡터라고 한다.
  • 인터럽트 아키텍처는 반드시 인터럽트 된 명령어의 주소를 저장해야 한다.
  • 트랩 또는 예외는 소프트웨어가 발생시킨 인터럽트를 의미한다
    • 인터럽트: 명령어가 끝나고 새로운 명령어가 시작되기 전 처리
    • 예외: 명령어가 끝나기 전에 처리 (의미가 더 강함)
  • 운영체제는 인터럽트가 발생하여 작동을 시작하는 방식(Interrupt driven)

인터럽트 핸들링

  • CPU는 인터럽트가 발생한 신호를 파악
    • 과거: poliling (주기적으로 cpu가 모든 기기를 체크)
    • 현재: vectored (cpu가 발생한 신호를 분석해서 거기에 맞는 인터럽트 시스템을 전달)

입출력 구조

  • 전제조건: cpu하고 별도의 하드웨어가 필요
  • 운영체제가 핵심기능을 가지고 있기 때문에 운영체제에게 핵심기능을 요청하는 식으로 구현 됨
  • 입출력이 시작된 후, 제어권은 완료를 기다리지 않고 바로 사용자 프로그램에게 넘어간다
    • 시스템 호출: 사용자가 입출력 완료를 대기할 수 있도록 운영체제에게 요청
    • 장치 상태 테이블: 장치마다 유형 주소와 상태를 표시
    • OS는 장치의 상태를 결정하고 인터럽트를 추가하기 위하여 항목을 갱신할 때 테이블을 찾아본다.

저장장치의 정의와 표기

  • 기본단위는 비트
  • 한 바이트는 8비트 대부분에 컴퓨터에서는 가장 작은 편리한 저장 된위
  • 1 킬로바이트 KB 2^10
  • 1 메가바이트 MB 2^20
  • 1 기가바이트 GM 2^30
  • 1 테라바이트 TB 2^40
  • 1 페타바이트 PB 2^50

저장장치 구조

  • 메인 메모리: CPU가 직접 접근할 수 있는 유일한 대용량 저장 매체
    • 임의 접근
    • 휘발성
  • 보조 저장장치: 대용량 비휠발성 저장 용량을 제공하는 메인 메모리의 확장
  • 하드 디스크: 자성 기록 가능 물질로 덮힌 단단한 금속 또는 유리 플래터
    • 디스크 표면이 논리적인 트랙으로 나뉘고 트랙은 다시 섹터로 나뉜다
    • 디스크 제어기가 장치와 컴퓨터의 논리적인 상호 작용을 결정한다.
  • 반도체 디스크: 하드 디스크 보다 빠른 비휠발성 저장 매체
    • 다양한 기술
    • 점점 더 대중화 되고 있음

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

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

+ Recent posts