포스트

운영체제 - OS

운영체제 - OS

2023-03-09. 14:53 : 글 계승.
U-SS, OS, 운영 체제 과목

💫 길라잡이


  • 배우는 것
    • 컴퓨터 작동 방식과 기본적 구성
    • 좋은 프로그래밍을 위한 성능 분석 방법
    • 최신 프로세서 (캐시, 파이프라인)에 영향을 미치는 문제
  • 배우는 이유
    • 컴퓨터 과학자
    • 성능 좋은 SW
    • HW 구매 결정, 전문자로서 조언 제공
  • 교과 내용
    • 컴퓨터 시스템의 전반적 개념
    • 프로그램 구조와 실행
    • 시스템에서 프로그램 실행 원리
    • 프로그램의 상호작용 및 통신

주 교재 : 운영체제 이론과 실제 - 이형봉

제1장 운영체제의 개념 및 발전과정
제2장 운영체제를 위한 배경 지식
제3장 입·출력 관리
제4장 프로세스 및 스레드 관리
제5장 프로세서(CPU) 관리
제6장 프로세스 동기화
제7장 교착 상태 관리
제8장 메모리(주기억 장치) 관리
제9장 가상 메모리 관리
제10장 파일 시스템 관리
제11장 디스크 스케줄링
제12장 플래시 메모리

OS 시스템의 종류
컴퓨터 시스템 주요 구성 요소
명령어 사이클
Storage 레지스터
Addressing-Mode
Interrupt
CPU 실행모드
IO 입출력 장치
Process, Processor
CPU Scheduling
Race Condition - 교착상태
Memory 관리
File
HDD

💫 OS


컴퓨터를 운영하기 위한 수법과 절차를 모은 소프트웨어 체계
컴퓨터를 조정 운전하는 소프트웨어

  • 필요성
    • 컴퓨터의 기본적인 처리 과정 고찰
      • IPO Input-Process-Output
      • 만약 마우스,키보드,모니터,프린터 등 기본적인 입출력 방법을 운영체제가 제공하지 않는다면
      • 키보드 마우스를 사용하는 GUI vs 콘솔
  • 주요 목적 기능
    • 편리성 추구
      • 사용자와 하드웨어 사이의 중계/기교/인터페이스 역할
      • 사용자들이 컴퓨터를 편리하게 사용할 수 있도록 도움을 줌 (사용자 화면)
    • 효율성 추구
      • CPU, 메모리등의 자원을 효율적으로 사용할 수 있도록 관리하는 자원 관리 역할
        • @ 작업관리자 열어보면 수백개의 프로그램 프로세스가 실행 중
      • 값비싼 컴퓨터의 처리량을 향상시킴으로써 투자 효율 증대 (시스템측면)
    • 보안성 추구
      • 컴퓨터의 내부 자원(HW)와 사용자 정보(Data)를 보호하는 역할 담당
      • 컴퓨터와 사용자를 보호함으로써 지속적 운용 유지(사용자, 컴퓨터 동시 만족)
  • 실체 및 활동
    • 하나의 거대한 프로그램
      • 사용자에게 서비스(프로그램 적재-실행(입력/계산/출력)-프로그램 제거)를 제공하기 위한 목적으로 메모리에 상주
      • 부트 과정을 거쳐 메모리에 설치됨
    • 운영체제 접촉
      • 사용자들은 시스템 콜 System Call 이라 부르는 서비스 요청 접속 창구를 통해 서비스를 요청하고 결과를 되돌려 받음 (Operating System Interface)
      • 시스템 콜은 함수 (라이브러리) 형태로 제공되고, 사용자는 프로그램에서 호출하여 사용
      • @ printf, mkdir → 프로그램이 모니터에 띄우는 게/디렉토리를 만드는 게 아니라, 이를 운영체제에 요청/부탁하고 = 시스템 콜 System Call, 운영체제가 모니터에 띄움/디렉토리를 만듬 → 다시 호출된 곳으로 복귀
      • @ 이 외에도 눈에 띄지 않는 운영체제 처리 들이 많음
      • @ atoi는 그냥 함수, 근데 printf은 운영체제로, 생긴 것 똑같은 데 처리 과정은 다를 수 있다
      • @ Win32API - C, MFC - CPP, 시스템 프로그래머
  • (시스템) 명령어
  • 시스템 명령어는 결국 프로그램이다 = 운영체제에게 부탁하는 프로그램이다
    • 자주 사용되는 시스템 콜을 매번 프로그램을 작성하여 서비스를 받아야 한다면 불편
      • 예) 디렉토리 생성삭제, 파일 생성삭제
    • 위와 같이 자주 사용되는 시스템 콜을 위해 미리 작성되어 있는 프로그램(실행파일)을 시스템 명령어라 함
    • 유닉스/리눅스의 mkdir, rmdir, rm, vi
    • 윈도우 도스창의 del, ren, mkdir, rmdir

🫧 계층구조, 추상화

컴퓨터시스템 계층 구조

OS 추상화

  • Processes (Processor)
    • Virtual Memory (Main Memory)
      • Files (I/O Devices)

🫧 TODO

Process 프로세스

  • Thread
    • Multi Thread : 단일 프로세서에서 두 개의 실행 쓰레드를 가진 프로세스
    • Thread : 실행 단위

Virtual Memory

File

  • OS is a resource manager
    • Sharing
    • Protection
    • Fairness
    • Performance
  • OS provides the progrma execution envionment
    • Hides the messy details which must be performed
    • Presents users with a virtual machine, easier to use

💫 OS 종류

🫧 Linux

Unix와 유사한 OS
time-sharing, multi-task, multi-user OS

  • 구성
    • 응용
    • 셀 - 명령 해석기 (bash, csh 등)
    • 커널 - 엄격한 의미의 리눅스
    • 하드웨어

💫 OS 시스템의 종류


단일 프로그래밍 일괄처리 시스템
다중 프로그래밍 일괄처리 시스템
시분할 시스템
다중 프로세서 시스템
분산 Distributed 처리 시스템

  • 단일 프로그래밍 일괄처리 시스템, Single-stream(줄기가 하나) Batch(바구니, 뭉탱이 한 번에) Processing Systems
    • 오직 하나의 프로그램만을 적재하여 실행
      • @ 공장처럼 하나 처리 후 다름
      • @ HDD가 없었기에 펀치카드 다발을 통해 프로그램 자체를 올림
      • @ 펀치카드 한 장 = 한 문장
    • 처리 중인 프로그램이 입출력 서비스를 요청했다면?
      • @ 다른 일을 처리하지 못하고 계속해서 대기해야 함 => CPU 효율, Utilization 이용률, Through-put 단위 시간 당 처리량

펀치카드 다발 (프로그램)
|
카드 리더기
|
Main Memory
{
User Program

Operating System
}

  • 다중 프로그래밍 일괄처리 시스템 Multiprogramming Batch Processing Systems
    • 메모리를 조각하여, 여러 개의 프로그램을 적재하여 실행
      • @ 멀티 스트림, 근데 대신 멀티 프로그래밍이라는 용어를 쓴다
    • 처리 중이던 하나의 프로그램이 입출력 서비스를 요청했다면?
      • @ 기본적으로는 처리 끝나거나, 입출력을 시작할 때까지 하나의 프로그램 처리
    • 자기 프로그램이 언제 끝날지 예측 불가
      • 다른 프로그램이 더 느리다면 그만큼 더 느리게

펀치카드 다발 (프로그램)
| | |
카드 리더기
| | |
Main Memory
{
User Program 2
User Program 1
User Program 0

Operating System
}

  • 시분할 시스템 Time-Sharing Systems
    • 여러 개의 프로그램을 적재하여 실행하되
      • 짧은 시간 동안의 주기로 모든 프로그램을 골고루 조금씩 처리
      • 한 번에 주어지는 최대 처리 시간을 타임 퀀텀 Time Quantom 혹은 타임 슬라이스 Time Slice
    • 다중 사용자들의 대화적 처리 Interactive Processing 환경에 적합
  • 병렬 처리 Parallel Processing System
    • 다중프로세서 시스템 Multi Processor System
      • 프로세서 CPU 를 여러 개 장착한 시스템
      • @ 왜 CPU가 아니라 Processor
        • @ Processor - CPU FPU GPU 일반화
        • @ 여기선 CPU를 의미
      • 프로세서 수 만큼의 프로그램들이 병렬로 처리될 수 있음
      • 프로세서 일부가 고장나더라도 나머지 프로세서들로 기능유지 가능
        • 결함 허용 컴퓨터 Fault Tolerant Computer
        • 성능 Throughput 과 신뢰성 Reliability 향상
          • @ 성능 - CPU를 여러 개 장착하는 주된 이유
    • 병렬 처리 Parallel Processing 와 병행 처리 Concurrent Processing
      • 병렬 처리는 어떤 시각을 기준에서 여러 개의 프로그램을 처리
      • 병행 처리는 어떤 시각을 기준에서 오직 한 개의 프로그램을 처리하나, 번갈아 처리함으로써 전체적(거시적)으로 여러 개의 프로그램을 처리하는 효과를 얻음
    • 넓은 의미에서 분산 Distributed 처리 시스템의 일종
      • 일반적으로 여러 독립된 시스템을 네트워크로 연결
      • 시스템 하나에 처리하는 놈을 여러 개 두는 : 간결화 시스템 : 버스로 연결, Tightly-Coupled
      • 시스템을 독립시켜놓고 네트워크로 연결하여 분단 처리 : 약결합 시스템 Loosely Coupled
  • 병렬 처리
    • 대칭형과 비대칭형 다중 프로세서 시스템
      • 대칭형 다중 프로세서 시스템 SMP Symmetric Multi-Processor System
        • 프로세서들의 역할 범위가 동등, 즉 마스터-슬레이브 개념 없음
        • 어느 프로세서나 사용자 영역과 시스템 영역 실행 가능
          • 운영체제에 부담
          • 동시에 시스템 영역을 사용하면 경쟁 상태 발생 가능
        • 프로세서 하나가 고장나도 작동
      • 비대칭형 다중 프로세서 시스템 ANP Asymmetric
        • 마스터 프로세서와 슬레이브 프로세서 지정
        • 시스템 영역은 마스터 프로세서만 실행 가능
        • 마스터 프로세서가 고장나면 시스템 전체 스톱
        • 운영체제 부담, 구현 난이도 감소
        • 마스터 고장나면 대책이 없다

Bus , 프로세서들 간 버스 연결 방식 (강결합 시스템)

  • 분산 처리 (약결합) 시스템
    • 여러 개의 독립된 시스템을 네트워크로 연결
    • 주어진 일을 분담하여 병렬 처리
    • 다중 프로세서 시스템도 넓은 의미에서 분산처리 시스템 → 강결합 시스ㅡ템
    • 보통은 약결합 시스템 혹은 클러스터라고 함
  • 분산 처리 시스템의 목적
    • 처리량 향상, 자원 활용도 향상, 시스템 신뢰도 향상, 점진적 시스템 확장
  • 분산 처리 시스템의 제공 기능
    • 위치 투명성(분리 된 것이 아니라 우리, 하나로 보이게), 고장 투명성(고장나도 모르고), 접근 투명성(차이가 있어서는 안된다), 중복 및 이동 투명성(중복이어도, 시스템 A에서 B로 옮겨지더라도 사용자가 모르고 쓸 수 있게)
  • 분산 처리 시스템의 연결 방식
    • 하이퍼큐브 Hyper Cube
      • 하이퍼 큐브 연결방식이 대표적
      • 8 노드 (시스템)인 경우 각 노드는 3개의 인접 노드를 가짐
      • 16노드인 경우 각 노드는 4개의 인접 노드를 가짐
    • 완전 연결 Fully Connected
      • 초기 설치 비용이 큼
      • 사이트 확장 비용이 큼
      • 사이트 간 통신 속도가 빠름
      • 선로 고장에 따른 신뢰도가 높음
    • 성형 Star
      • 초기 설치 비용 적음
      • 가운데 중계 시스템의 부하 과대
      • 중계 시스템의 고장에 따른 신뢰도 저하
      • 사이트 추가 비용이 적음
    • 링형 Ring
      • 완전 연결과 성형의 절충
      • 초기 설치와 사이트 확장 비용이 비교적 저렴
      • 두 개 이상의 사이트 고장은 네트워크 양분
  • NOS

  • 실시간 시스템 RealTime Systems
    • 프로그램의 처리 마감 시한을 보장하느 시스템 (실시간 처리 환경)
      • 어떤 사건 Event을 기다리는 프로그램에게, 사건 발생 시각부터 처리 완료 시까지의 최대 소요시간 한계를 보장
        • → 사건이 발생했는데도 불구하고 해당 프로그램의 실행이 오래도록 지연된다면?
    • 경성 실시간 시스템 Hard Real-Time Systems
      • 프로그램의 처리 마감 시한을 원래의 개념대로 엄격하게 보장
    • 연성 실시간 시스템 Soft Real-Time Systems
      • 프로그램의 처리 마감 시한을 원래의 개념대로 엄격하게 보장하지는 못하지만, 해당 프로그램의 처리 지연을 최소화 시킬 수 있음.
      • 범용 운영체제인 유닉스, 리눅스, 윈도우 등에서 실시간성 프로그램을 분류하여 관리

💫 이중 모드 - Dual Mode Operation


CPU의 두 가지 실행모드, 시스템 모드와 사용자 모드
CPU가 사용자 영역과 시스템 영역을 드나드는 것

시스템 모드 - System Mode (특권 Privileged Mode, 수퍼바이저 Supervisor Mode) → CPU가 운영체제 부분을 실행할 때 설정되는 모드

사용자 모드 - User Mode (프로그램 Program Mode)
→ CPU가 사용자 프로그램을 실행할 때 설정되는 모드

  • 특권 명령어 Privileged Instruction
    • 시스템 모드에서만 실행 가능한 기계 명령어
    • 사용자모드에서 실행될 경우 예외 발생
    • 입출력 명령어 등 시스템 보호 및 유지를 위해 필요
  • 모드간 이동
    • 시스템 모드에서 시작(부팅과정)
    • 시스템 모드 → 사용자 모드
      • 운영체제가 사용자 모드로 변경하고 사용자 프로그램으로 점프
    • 사용자 모드 → 시스템 모드
      • 시간 초과 등의 인터럽트에 의해 운영체제 내 ISR 로 점프하면서 설정
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.