IT/운영체제

[Chapter 01] Introduction of OS

Nellie29 2024. 4. 3. 01:47


1️⃣ OS

💙 Sort of OS?

  • 윈도우(Windows), 맥 OS(Mac OS), 리눅스(Linux), 유닉스(Unix) etc…

💙 CPU, RAM, HDD, OS, ROM?

💙 컴퓨터에 OS가 설치되지 않았다면?

  • 컴퓨터 전원을 킨다면→ 전원이 켜지기만 함
  • 프로그램을 실행시키려면→ 프로그램 존재X
  • 프린트를 시키기, 하드디스크에 파일 저장 불가

💙 What is OS?

  • 사용자&컴퓨터 하드웨어 사이 중개자
  • 컴퓨터 하드웨어를 관리하는 S/W (ex. 블루투스 연결/제거)

💙 운영체제의 목표

  • 사용자적 관점
    • 컴퓨터 시스템을 사용하기 편리하게 만들자 (사용자가 원하는 것을 보다 쉽게 해결할 수 있도록)
    • user-friendly (OS의 shell 부분, interface)
  • 시스템적 관점
    • 컴퓨터 하드웨어를 효율적으로 사용하자 (하드웨어를 낭비하지 말고, 성능을 향상하자)
    • OS의 kernel 부분
💡 즉, 컴퓨터 하드웨어를 효율적으로 관리하여 성능을 높이고, 사용자에게 편의를 제공하는 프로그램(S/W)

 

💙 Structure of Computer System

  • 4가지 구성 요소
    • 하드웨어
    • ex. CPU, memory, I/O 장치
    • 운영체제
    • 응용프로그램
    • 사용자

 

💙 운영체제가 하는 일 (User view)

사용되는 인터페이스에 따라 운영체제가 하는 일이 달라짐 (User/System View)
  1. 일반적 사용자
    • 편리함, 좋은 성능 want
    • 자원의 이용률에는 관심X
  2. 메인프레임 또는 미니 컴퓨터에 연결된 터미널 사용자
    • 자원 이용 극대화
  3. 워크스테이션-서버 사용자
    • 개인의 사용 편의성 & 자원 이용 간 조화
  4. 휴대용 컴퓨터
    • 전력 소모 줄이기
    • 사용의 편의성
  5. 장치에 내장된 컴퓨터 또는 자동차에서 사용되는 일부 컴퓨터

💙 운영체제가 하는 일 (System view)

  1. Resource Allocator/Manager
    • 모든 자원을 관리
    • 효율, 공정한 자원 사용을 위한 결정
  2. Control program
    • 컴퓨터의 잘못된 사용, 부적합한 사용을 방지

2️⃣ Computer-System Organization (컴퓨터 시스템 구성)

💙 Computer-System operation

  • 하나 이상의 CPU+장치 제어기
  • → 공유 메모리에 접근할 수 있도록 공통 버스로 연결 (데이터 버스)
  • CPU와 장치는 병행수행
  • ∴ 메모리를 사용하기 위해 서로 경쟁
  • 메모리에 동시에 여러 프로그램이 올라갈 수 있음 
  • 컴퓨터가 시작하기 위해서… (ROM이 하는 작업)
    1. POST 작업
      • 장치가 다 갖추어져 있는지 확인
      • 보통 ROM, EPROM에 저장
      • 펌웨어라고 칭함
        • 펌웨어: 기기의 동작을 확인하고 하드웨어를 체크함
      • 시스템의 모든 구성 요소를 초기화
      • 운영체제 커널을 메모리에 적재 후, 커널 실행
        • 커널은 ROM이 RAM에 로드시킴 (커널도 OS이기때문)
      • 시스템은 완전히 부팅된 후 event 발생 대기 (User의 명령 대기)Boot Loader 작업
      • #What is Kernel?
        → OS는 kernel과 shell 부분으로 나뉨
        • → 하드웨어가 application을 직접적으로 실행시킬 수 없어 OS가 필요

💙 Operating-System Structure

  1. 배치 프로그램
    • 여러 프로그램을 차례 차례 들어간 순서대로 실행
    • 두가지 이상 프로그램을 동시에 실행할 수 없음
    • (ex. 음악 들으면서 문서 작업하기 불가능)
    • 이러한 문제점을 보완하기 위해 다중 프로그래밍, 시분할 시스템 출현
  2. 다중 프로그래밍
    • CPU가 최소 하나의 작업을 수행하게 함 (쉬지 않도록)
      • 실행 중인 작업이 대기가 걸린다면, OS는 다른 작업으로 전환
    • 여러 작업을 메모리에 적재
    • 자원 효율을 극대화 함 
    • → I/O 작업과 CPU 작업이 동시에 적재되어 있도록!
    • but…
      1. 다중 프로그래밍 방식은 입출력이 일어날 때만 스케줄링이 일어남
      2. 결과적으로 한 프로그램의 입출력 빈도와 시간이 다른 프로그램에 영향을 줌
      3. → 이를 보완하기 위해 시분할 시스템 등장

3. 시분할 시스템

  • 아주 짧은 시간 간격을 두고 여러 프로그램을 전환하면서 실행
  • CPU가 빈번하게 다른 작업을 전환하도록 논리적으로 확장함
  • 사용자들이 컴퓨터를 공유할 수 있음
  • 시스템은 한 사용자에서 다른 사용자로 빠르게 전환함 → 사용자들이 필요할 때 컴퓨터를 자유롭게 사용 가능
  • 대화식 컴퓨팅 환경을 제공
    • 입출력 하드웨어의 출현
    • 응답시간이 1초 미만이어야 함
    • 사용자는 메모리에 실행 중인 프로그램 적어도 하나 가짐
    • (실행중인 프로그램 → 프로세스)
    • 동시에 여러 작업이 실행할 준비가 되어 있으면 CPU Scheduling (누가 먼저 CPU에 들어갈 것인가?) 진행
    • CPU Scheduling → OS가 control 함
💡 CPU는 한 작업밖에 수행하지 못하지만, 스위칭이 빠르게 일어남
∴ 사용자의 눈에는 연속적인것 처럼 보임

3️⃣ Interrupt 인터럽트

💙 종류

  1. 하드웨어 인터럽트
    • 운영체제의 처리를 필요하는 상황을 전기적 신호를 사용해 알림
      1. 기계검사 인터럽트
        → 배터리가 다 떨어져 전원이 off
      2. 외부 인터럽트
        → 스탑워치, 알람
      3. 입출력 인터럽트
        → 입출력 종료, 입출력 오류에 의해 CPU의 기능이 요청되는 경우
        ex. 파일 복사 시, 다 됐다는 알람
      4. 프로그램 검사 인터럽트
        → 보안 프로그램
      5. 메모리 공간의 불법적 접근 막아줌
        → 할당 받은 메모리 공간을 벗어나려 할 때종류 (HW/SW)
💡 OS는 interrupt가 요청되면 메뉴얼을 실행시킴 (ISR)
→ 이걸 memory 에 넣어줌 (일종의 명령어 개념)
→ CPU는 하던 작업을 멈추고 IR을 해결후, 다시 실행

 

2. 소프트웨어 인터럽트

  • 시스템 호출 (System Call)
    • 프로그램 실행 중, 프로그램 상 처리 불가능 오류 or 이벤트를 알림
    • Software에서 OS에게 System call 요청 (개발자가 의도적으로)모니터 출력할 때 (cout, printf)
    • ex. 사용자의 키보드 입력 받을 때 (cin, scanf)
  • CPU 내부 인터럽트 (자체적 IR)
    • 트랩, 예외라고 칭함
    • 포인터 연산 실수, 0으로 나누고자 할 때 …etc
  • 인터럽트는 인터럽트 서비스 루틴(ISR)에게 제어권 넘김
    • ISR은 인터럽트 벡터에 저장되어 있음
    • 인터럽트 벡터?
      → 해당 인터럽트를 처리하기 위한 명령어들의 주소값을 가지는 표
  • 인터럽트가 들어오고 프로그램이 중단되면, 프로그램 상태를 스택에 저장함 (PC와 SR)

4️⃣ Operating-System Operations

💙 Operating-System Operations

  • 다수가 유한한 자원을 공유할때, 악의적인 한 개체로부터 시스템 보호
  • 이중모드(Dual-mode) (User/kernel mode)
    • OS가 자신을 보호하기 위한 장치
    • Mode bit (1 or 0)
      • 일부 명령어 (STOP, EXIT, Set Timer)를 특권 명령어로 지정
      • → 커널 모드에서만 실행 가능하게 함
  • 입출력 장치 보호
    • A와 B를 프린팅 한다고 가정
    • A가 전부 출력된 후, B가 출력되도록 하게 함
  • 메모리 장치 보호

  • CPU 장치 보호
    • 가장 비싸고 중요한 하드웨어인 CPU를 하나의 프로세스에 의해 점유당하지 않게 하는것이 목적
    • 시분할 시스템 (타이머)
    • → 타이머: CPU를 보호하는 중요한 장치

💙 Storage Structures

  • 메인 메모리 (RAM)
    • CPU가 접근 가능한 대용량 휘발성 저장 매체
    • (레지스터나 캐시메모리도 대용량이 아니라면 CPU가 접근 가능함)
    • 상황에 따라 아무곳이나 갈 수 있는 임의 접근 가능
  • 보조 저장 장치
    • 대용량 비휘발성 저장 매체
    • ex. 하드 디스크, 반도체 디스크 (SSD-ROM 기반)
  • 계층 구조
    • 기준→ 속도, 비용, 휘발성 여부
  • 캐싱
    • 자주 사용하는 정보나 명령어를 저장공간에 미리 가지고 있다가 복사해옴
    • 메인 메모리→ 보조 저장장치를 위한 캐시

💙 Process Management

  • 프로세스 → 실행 중인 프로그램
    • 프로그램-수동적, 프로세스-능동적
    • User가 프로그램을 실행시켜주면 프로세스가 됨
  • 프로세스는 업무 수행을 위해 자원을 필요로 함
    • OS에 요청 ( OS의 시스템 콜 사용)
    • CPU, 메모리, I/O, 파일
  • 프로세스는 순차적으로 명령어를 한번에 하나씩 실행
  • 프로세스가 종료될 때, 재사용이 가능한 모든 자원을 반환
  • 운영체제의 프로세스 관리 (여러 프로세스 협업 가능)
    • 프로세스간 동기화 할 수 있는 기법 제공
    • 프로세스간 통신할 수 있는 기법 제공
    • 교착상태를 처리하기 위한 기법 제공

💙 Memory Management

  • 메모리-바이트의 대용량 배열, 각 바이트는 자신의 주소 가짐
  • 프로그램 실행에 필요한 데이터 전체 또는 일부가 메모리에 있어 야 함
  • 로지컬/피지컬 주소 변환: OS
  • 운영체제의 메모리 관리
    • 프로세스가 사용 중인 메모리 영역 추적
    • 메모리로 어느 프로세스와 데이터를 적재하거나 내보낼지 결정
    • 필요에 따라 메모리 할당하고 반환함

💙 Storage Management

  • 파일(file): 물리적인 특성을 추상화하여 논리적인 저장 단위
    • 파일 생성자에 의해 정의된 관련 정보의 집합체
    • 디렉토리 단위로 구성
  • 각 저장 매체는 접근 속도, 데이터 전송률, 접근 방식(순차or임의)등 특성이 존재
  • 운영체제의 파일시스템 관리
    • 파일과 디렉터리 생성과 삭제&조작하기 위한 기본 기능 제공
    • 파일을 보조 저장장치에 매핑
    • 비휘발성 저장장치에 파일 백업
  • 비휘발성 대용량 데이터는 디스크에 저장
  • 운영체제의 대용량 저장장치 관리
    • 빈 공간 관리
    • 저장장소 할당
    • 디스크 스케줄링 (최단거리 알고리즘)
  • 3차 저장장치
    • optical storage, magnetic tape, USB etc.
      • WORM (write-once, read-many-times) and RW (read-write))
    • Mount and unmount 관리
  • 다양한 계층의 저장장치 성능
    • register>cache>main memory>solid state disk>magnetic disk
    • 순으로 용량↓, 속도↑, 처리량↑

💙 Protection and Security

  • 보호(Protection)
    • OS에서 정의한 리소스에 액세스하는 것을 제어하는 모든 메커니즘
  • 보안(Security)
    • 시스템 방어
    • ex. 서비스 거부, 웜, 바이러스, 신분 도용, 서비스 절도 등
  • OS의 보호와 보안 기법
    • 사용자 식별자에는 이름 및 연동된 번호 존재, 사용자 당 하나씩 할당
    • UNIX 경우 파일당 권한 허용 범위 설정 가능
    • 그룹 식별자(그룹 ID)를 통해 사용자 집합 정의 & 관리 가능
    • 권한 상승(사용자→관리자)은 더 많은 권한을 가진 유효 ID로 변경

💙 Computer-System Architecture

  • 대부분의 시스템 → 하나의 범용 CPU 사용
  • 다중처리기(Multiprocessors) 시스템의 사용, 중요성 ↑
    • 병렬 시스템, 멀티코어 시스템
    • 장점
      1. 증가된 처리량
      2. 규모의 경제 (많으면 많을수록 크다)
      3. 증가된 신뢰성 –결함 허용 (1명의 과제 vs 4명의 팀플)
    • 두 가지 형태
      1. 비대칭 다중처리
        • 각 처리기가 특별한 임무를 수행
        • 서로 다른 업무를 처리 후, 하나로 합침
        • 하나로 모아줄 대장 필요
      2. 대칭 다중처리
        • 각 처리기는 공통적인 임무를 수행
        • 다같이 동일 임무 수행
  • 대칭 다중처리 구조 
  • 멀티 코어 디자인
    • 단일 코어를 여러 개 가진 칩보다 효율적
    • 하나의 CPU안에 core가 여러개
  • 클러스터 시스템(Clustered Systems)
    • 둘 이상의 독자적 시스템 or 노드들을 연결
    • storage-area network (SAN)를 통하여 저장장치를 공유
    • → 물리적으로 떨어져 있어도 상관 없음
    • 실패해도 지속가능한 고가(high-availability)용 서비스 제공
    • → 비대칭/대칭 클러스터링
    • 일부 클러스터는 고성능 컴퓨팅 환경을 제공
      • ex. 기상청, 우주항공
      • 응용프로그램→ 병렬처리가 가능해야함
    • 각각 물리적으로 떨어진 시스템을 네트워크로 연결함
    • → 고성능을 낼 수 있음

5️⃣ Computing Environments

💙 Computing Environments

  • Mobile computing
    • 스마트 폰, 태블릿 등 (Private 한 장치)
    • 이 기기들과 전통적인 컴퓨터 사이의 기능적 차이?
      • 작고 가볍다
      • 위치 서비스 이용 가능
      • 통신을 위한 수신기가 존재함
      • LAN, 모바일, 네트워크 블루투스…etc 모두 내장 (단, 서로 간섭받지 않게 위치)
      • 근거리 통신망 LAN내장
      • 입력장치 존재: 마이크, 터치스크린, 가상키보드…etc
    • 연결을 위해 IEEE 802.11 무선 또는 셀룰러 데이터 네트워크 사용
    • Apple ios, Google Android
  • Distributed Systems
    • 네트워크로 연결된 개별적, 서로 다른 특징을 가진 시스템의 집합
      • 네트워크는 통신 경로, TCP/IP 주사용
        • 근거리 통신망 (LAN), 광역 네트워크 (WAN)…etc
    • 네트워크 OS는 네트워크로 연결된 시스템 간 기능 제공
      • 시스템끼리 메세지를 교환 할 수 있는 통신 체계
      • 단일 시스템인 듯한 환상 (물리적으로 떨어져있지만 하나의 파일 시스템으로 돌아가도록)
      • 고급 인력 vs 보통 인력 5명 → 일반적 시스템(보통 인력 5명) 여러개를 쓰는게 효율적
  • Client-Server Computing
    • 클라이언트가 생성한 요청에 서버
      • Compute-server 시스템: 클라이언트에게 서비스 (데이터베이스)를 요청하기 위한 인터페이스 제공
      • 파일 서버 시스템: 클라이언트가 파일을 저장 및 검색 할 수 있는 인터페이스를 제공
    • 서버 서비스 기본구조: request&response
    • 웹서버의 필수 기능
      • 동시 접속자수 파악
      • 꺼지지 않아야 함
      • 데이터베이스와 연동될 수 있는 구조 (독단적으로 존재하지 않음)
  • Peer-to-Peer Computing
    • 네트워크 구조는 client-server와 P2P로 나뉘어짐
    • P2P는 클라이언트와 서버를 구분하지 않음
    • 각 peer은 클라이언트, 서버, 또는 클라이언트&서버(둘 다)의 역할
      • 단, 클라이언트와 서버는 정확히 구분하지 않음
      • 상황에 따라 역할이 바뀜
    • 모든 노드는 peer(동료)
      • OS의 관점→ 노드
      • 네트워크의 관점→ peer
    • 컴퓨터가 항상 켜져있어야 함
    • 누군가 나에게 작업을 요청하면 나는 서버, 요청자는 클라이언트가 됨

💙 Virtualization (가상화)

  • OS가 다른 OS내에서 하나의 응용처럼 실행
  • 하나의 하드웨어 위에 여러 OS를 동시에 독립적으로 구동하는 것
  • ex. 맥북에서 윈도우가 가능하게함
  • 연구와 호환성을 위하여 랩탑 or 데스크톱 컴퓨터에서 여러 OS를 실행
  • 광범위하게 사용중+점점 성장중
  • VMM이 가상화 서비스 제공

 

  • 에뮬레이션
    • 소프트웨어를 한 장치가 정말로 다른 장치라고 믿도록 속이는 것
  • VMware (가상머신(virtual machine))
  • Cloud Computing
    • 컴퓨팅, 스토리지, 앱등을 네트워크를 통한 서비스로 제공
    • 가상화를 기능의 기본으로 사용 → 가상화의 논리적 확장
    • 종류
      • 공중 클라우드 (ex. naver)
        • 누구나 사용 가능
      • 사유 클라우드 (ex. 학교 메일 서비스)
        • 인증받은 사람만 사용가능
      • Software as a Service
        • 하나 이상의 응용 프로그램 (ex. 워드 프로세서)
      • Platform as a Service
        • 소프트웨어 스택 (ex. 데이터베이스 서버)
      • Infrastructure as a Service
        • 서버 or 저장장치 (ex. 백업용으로 사용할 수 있는 저장장치)

💻 Reference

 

운영체제 | Abraham Silberschatz - 교보문고

운영체제 | ▶ 이 책은 운영체제론을 다룬 이론서입니다. 운영체제론의 기초적이고 전반적인 내용을 학습할 수 있습니다.

product.kyobobook.co.kr