1. Introduction

박수빈·2022년 1월 11일
0
post-thumbnail
  • operating system
    • 컴퓨터 하드웨어를 관리하는 소프트웨어
    • 응용 프로그램을 위한 기반 제공
    • 사용자와 하드웨어 사이의 중재자 (하나의 HCI)
    • 사용자 ↔ application program ↔ OS ↔ HW

1.1 What Operating systmes Do

  • Computer Sys. = HW + OS + App. + User
  • 컴퓨터 시스템이 동작할 때 자원을 적절하게 사용할 수 있는 방법 제공

1.1.1 User View

  • 사용의 용이성 >>>> 자원의 이용
  • 내장형 컴퓨터 embeded computer
    • 가전제품, 자동차 내
    • 사용자의 개입 없이 작동

1.1.2 Sys. View

  • resource allocator
    • 자원: cpu 시간, 메모리 공간, 저장장치 공간, 입출력 장치
  • control program 제어 프로그램
    • 입출력 장치 제어

1.1.3 운영체제의 정의

  • Moore’s Law
    • 집적회로(integrated circuit)의 트랜지스터 수가 18개월마다 배가할 것
  • 일반적 정의: 컴퓨터에서 항상 실행되는 프로그램 (커널)
    • 커널이 os의 주요 부분. 하지만, 커널 외의 부분까지 엮어서 os라고 부르기도 하는것. 애매모호한 정의
    • 시스템 프로그램: os와 관련있지만, 반드시 커널의 일부일 필요는 X
      • 윈도우, 맥, 안드로이드, 게임엔진
    • 응용 프로그램: 시스템 작동과 관련되지 않은 모든 프로그램
    • 미들웨어: app. 개발자에게 추가 서비스를 제공하는 sw 프레임워크

1.2 CS Organization

  • 버스 통해 연결된 장치 컨트롤러
  • 장치 드라이버
    • 컨트롤러의 작동을 잘 알고있음
    • 일관된 인터페이스 제공

1.2.1 Interrupts

  • 장치 → 로컬 버퍼 (데이터 전송) → 장치 컨트롤러가 드라이버에게 완료 알림 (인터럽트)
  • 비동기 이벤트 처리
  • 인터럽트 방식
    1. 루틴 호출
      • 고유 핸들러 호출
    2. 포인터 테이블
      • 하위 메모리에 저장
      • 장치들에 대한 인터럽트 서비스 루틴 주소 저장
      • 인터럽트 벡터
        • 인터럽트 서비스 루틴 주소 제공 위한 주소
        • 장치의 고유 번호
        • 윈도우, 유닉스
  • 인터럽트 요청 라인
    1. nonmaskable interupt
      • 복구할 수 없는 메모리 오류
    2. maskable interupt
  • 우선순위 시스템 사용

1.2.2 Storage Structure

  • 메인 메모리
    • RAM
    • 재기록 가능한 메모리
  • 펌웨어
    • 쓰기 작업이 자주 발생하지 않고 비휘발성
    • 부트스트랩 prog.: 전원 켜는 프로그램
  • 보조저장장치
    • HDD, 비휘발성 메모리(NVM, ex:플래시 메모리)
    • 메인 메모리보다 느려
    • NVS: Non-Volatile Storage
      • 비휘발성 저장장치
      • 기계적 → HDD, 광디스크, 자기 테이프.... → 용량 크고 저렴
      • 전기적 → NVM (플래시 메모리, FRAM, SSD ...)
  • 적재 load
    • 메인 메모리 → 레지스터
  • 저장 store
    • 레지스터 → 메인 메모리

1.2.3 I/O Structure

  • DMA: Direct Memory Access
    • 댜량 데이터 이동 시 오버헤드 방지 (범용 버스 이용X)
    • NVS I/O
    • cpu 개입 없이 메모리↔버퍼 데이터 블록 전체 전송

1.3 CS Architecture

1.3.1 Single-processor Sys.

  • 단일 처리 코어, 하나의 CPU, 단일 프로세서
  • 코어: 명령을 실행하고 로컬로 데이터를 저장하기 위한 레지스터 포함하는 구성요소
  • 마이크로 프로세서
    • cpu 오버헤드 감소
    • 키보드 → 키스트로크를 코드로 변환하는 마이크로 프로세서 갖음

1.3.2 Multiprocessor Sys.

  • CPU: 명령 실행 HW

  • 프로세서: 하나 이상의 CPU 포함하는 물리적

  • 코어: CPU의 기본 계산 단위

  • 다중 코어: 동일 cpu에 여러 코어

  • 프로세서가 N개여도, 스케쥴링 오버헤드 때문에 N배 효율은 아님

  • SMP: Symmetric MultiProcessing

    • 각 프로세서에 cpu, 레지스터, 캐시 존재
    • 물리 메모리 공유
    • 동시 실행 가능해서 많은 프로세스 처리 가능
    • but, 하나만 과부화 걸리고 하나는 유휴상태일 수 있음
  • 다중 코어

    • 하나의 프로세서에 여러개의 코어
    • 칩 내 통신 속도 < 칩 간 통신 → 더 빠르다
  • NUMA: Non Uniform Mem. Access

    • CPU 마다 자체로컬 메모리
    • CPU 끼리 공유 시스템으로 연결
    • 병목현상 개선 방안
    • 시스템 상호 연결로 원격 메모리 엑세스 → 지연시간 증가 → 성능 저하
    • 스케쥴링 및 메모리 관리로 개선
  • 블레이드 서버

    • 독립적인 다중 처리기 시스템

1.3.3 Clustered Sys

  • 멀티 cpu
  • 둘 이상의 독자적 시스템/노드 연결
  • 저장장치 공유
  • LAN으로 상호 연결
  • 높은 availability
    • 하나의 컴퓨터 고장나도 서비스 계속 제공
  • 비대칭형/대칭형
    • 대칭형 → 서로 감시
    • 비대칭형 → 긴급 대기 모드 hot-standby
  • 병렬화 parallelize
    • 프로그램 → 분리된 요소로 나눈 작업
    • 결과를 결합하여 최종 해답 얻음
  • 우아한 성능 저하 grateful degradatoin
    • 남아있는 HW 수준에 맞춰 서비스 제공
  • 결함허용 시스템
    • 단일 구성요소에 오류 발생해도 계속 작동
    • 장애 감지, 진단 및 수정 기법 지님
  • DLM: Distributed Lock Manager
    • 데이터 공유 접근 제공
    • 접근 제어, 잠금 기법
  • SAN: Storage-Area Network
    • 스토리지 전용 네트워크
    • 수천 km 떨어진 클러스터 노드 가능하게 함

✔️ HADOOP

  • 클러스터형 시스템에서 데이터 분산 처리
  • 분산 컴퓨팅 노드에서 데이터와 파일 분산 처리 HDFS
  • YARN이 자원관리, 작업 스케쥴
  • MapReduce 시스템이 데이터 병렬 처리

1.4 OS Operations

  • 부트스트랩 = 초기 프로그램
    • cpu 레지스터, 장치 컨트롤러 .... 모든 시스템 초기화
    • 운영체제 적재 (OS 커널을 메모리에.. )
  • 시스템 데몬
    • 데몬: 사용자 제어 없이 백그라운드에서 돌아가는 prog
  • 이벤트 → 시스템 콜 실행
    • 인터럽트
    • 트랩: 예외, 오류

1.4.1 multiprogramming and multitasking

  • 프로세스: 실행중인 프로그램
  • 태스크: os가 처리하는 작업 단위
  • 멀티 프로그래밍
    • cpu가 항상 한개의 작업을 하고 있도록 함 (유휴상태idle 없도록)
    • 여러 프로세스를 동시에 메모리에 유지 → 하나 선택해 실행
    • a 프로세스가 인풋 기다리는 동안, cpu가 쉬지 않고 b 프로세스 실행
  • 멀티 태스킹
    • 프로세스 전환이 자주 발생하게 하여 사용자에게 빠른 응답
  • 멀티 프로그래밍 vs 멀티 태스킹
    • 멀티 프로그래밍은 프로세서 자원 낭비 x
    • 멀티 태스킹은 정해진 시간동안 task 바꿔 수행 (노래들으며 워드 작성)

1.4.2 Dual-mode and multimode Operation

  • 운영체제 코드와 사용자-정의 코드를 구분할 수 있어야 시스템이 손상되지 않고 잘 작동할 수 있음
  • 사용자 모드
    • mode bit: 1
    • 허가 없는 메모리 접근 등의 오류 발생 시 트랩
      • 인터럽트 벡터 → 운영체제가 프로그램 종료
  • 커널모드
    • mode bit: 0
    • 수퍼바이저 모드, 시스템 모드, 특권 모드 priviliged
  • 시스템 콜
    • os에 의해 수행될 동작인데, 사용자의 요청인 경우 호출

    • 사용자의 응용프로그램이 os로부터 서비스 요청

    • 모드 전환 이루어짐

    • 인터럽트 → 인터럽트 벡터 통해 서비스 루틴 call

1.4.3 Timer

  • 무한루프, 오류로 제어가 os로 돌아오지 않는 경우 방지
  • 고정 타이머/ 가변 타이머
    • 가변 → fixed-rate clock, couter
    • os가 couter 값을 설정 → clock이 tick할 때마다, count 감소 → 0되면 인터럽트

1.5 Resource Mgt.

  • 자원: cpu, mem, storage, I/O

1.5.1 Prcess Mgt.

  • 프로그램
    • passive 수동적
    • 그냥 저장된 파일
  • 프로세스
    • active
    • 스스로 prog. counter 갖고 있음
    • sys 내의 작업단위
    • os 프로세스 + 사용자 프로세스

1.5.2 Mem. Mgt.

  • 명령어
  • 데이터
  • 매핑

1.5.3 File-Sys Mgt.

  • 저장장치의 물리적 특성 추상화 → 파일 저장
  • 파일: 논리적 저장 단위
  • 디렉터리
  • 접근 제어: 읽기, 쓰기, 첨가 ...

1.5.4 Mass-Storage Mgt.

  • HDD, NVM
  • 마운트/언마운트

1.5.5 Cache Mgt.

  • 할당과 교체 알고리즘

  • 캐시 일관성 문제

    • 상위 캐시의 값만 변경되고, 하위에 반영되지 않는 문제


1.5.6 I/O Sys. Mgt.

  • 입출력 서브 시스템
    • 입출력 장치의 특성 감춰짐

1.6 Security and Protection

  • protection
    • cs가 정의한 자원에 대해 프로그램, 프로세스, 사용자의 접근을 제어하는 기법
  • 충분히 protect 해도 고장나거나, 부적절한 접근이 허용될 수 있다 → security 필요
  • Security
    • 외부/내부의 공격 방어
    • 식별자
      • uid
      • sid (security id)
      • 그룹 식별자
      • effective uid: 권한 상승. 특권 해제 시까지 가지는 id

1.7 Virtualization

  • 단일 컴퓨터 HW를 여러가지 실행 환경으로 추상화 → 자신만의 컴퓨터라고 느낌
  • 에뮬레이션
    • 소스 cpu의 형상 - 대상 cpu 형상 다른경우
    • 비용 큼
  • 가상화
    • 특정 cpu 위한 os가, 동일 cpu의 다른 os 내에서 수행..........

1.8 Distributed Sys.

  • 물리적으로 떨어져 있는 이기종 컴퓨터 집합
  • 네트워크
    • 두 개 이상이 시스템간의 통신 경로
    • 프로토콜, 거리, 전송 매체 → 속도 vary
    • LAN
    • WAN: Wide Area
    • MAN: Matropolitan Area NW
      • 도시내 건물
    • PAN: Personal Area
      • 블루투스 (폰-에어팟)

1.9 Kernal Data Structure

1.9.1 List, Stack, Queue

  • array
    • 각 원소가 직접 접근 될 수 있음
    • 단순 자료구조
    • 메인 메모리 = 하나의 array
    • 가변 크기 불가
  • list
    • 데이터 집단 → 하나의 시퀀스
    • linked list
      • singly
      • doubly
      • circular
    • 가변 수의 항
    • 삽입 삭제 용이
    • O(n)
  • stack
    • LIFO
    • push, pop
    • 함수 호출
  • queue
    • FIFO
    • 태스크 웨이팅 큐

1.9.2 Tree

  • 데이터의 서열 표시
  • general tree
    • 자식 수 무관
  • binary tree
    • 최대 2개 자식
    • binary search tree → right < left 순서
    • 최악의 경우 O(n) → balanced binary search tree: O(lg n)
      • red-black tree
        • 리눅스 cpu 스케쥴링 알고리즘

1.9.3 Hash Function and Maps

  • hash function
    • 데이터 입력 → 산술 연산 → 하나의 수 반환
    • O(1) 가능
    • hash collision
      • 다른 입력이 하나의 출력 가질 수 있음
      • 테이블에 연결리스트 두어 해결
      • O(1)이 아니게됨,,
  • hash map
    • hash function 사용해서 키:값

1.9.4 Bitmap

  • n개의 항의 상태 나타냄
  • n개의 이진 비트 스트링
  • ex) 각 자원의 사용 여부 (0,1)

1.10 Computing Env.

1.10.1 traditional Computing

  • 포털: 웹 접근 제공
  • 방화벽 firewall
    • 홈 계산 환경 보호
    • 네트워크 장치 간 통신 제한
  • batch 나 대화형
  • 시분할 시스템 → 희귀해짐

1.10.2 mobile computing

  • 이동 가능, 가벼움
  • gps, accelerometer, gyroscope ...
  • augmented reality 증강현실

1.10.3 Client-server computing

  • computing-server 시스템
    • 클라이언트가 작업 요청(데이터 요청)
    • 데이터베이스 서버
  • 파일-서버 시스템
    • 클라이언트가 파일을 생성, 갱신, 읽기, 제거
    • 웹 서버

1.10.4 P2P Computing

  • 클라이언트, 서버 구분 X
  • 서버 병목 X

1.10.5 Cloud Computing

  • 응용 프로그램을 넽웤 통해서

  • public - 지불 가능한 사람 누구나

  • private - 회사 내 사용 위한

  • hybrid

  • SaaS - 인터넷 통해 응용 프로그램 사용 (워드, 스프레드 시트)

  • PaaS

    • platform
    • 소프트웨어 스택 (db 서버, aws lambda)
  • IaaS
    - 서버, 저장장치 (aws ec2)

  • 어디까지 제공받느냐가 XaaS의 차이를 만듦

1.10.6 Real-time Embedded Sys

  • 임베디드 sys
    • 아주 특정한 작업만 수행
    • 원시적, 제한적
  • 반드시 약속된 시간, 순서에 작동

1.11 Free and Open-source OS

  • 소스 코드 형식 = not 컴파일된 이진 파일
  • 무료 소프트웨어
    • 사용, 재배포 및 수정 허용 라이선스 부여함
  • 오픈 소프트웨어
    • 소스코드 공개되어 있으나, 무료는 아님
    • Linux
  • reverse engineering 역공학
    • 이진 파일 → 소스코드

1.11.2 Free OS

  • GNU
    1. 자유 SW 실행 권리
    2. 소스코드 분석, 수정 권리
    3. 코드 수정 없이 배포, 판매 권리
    4. 코드 수정하여 배포, 판매 권리
  • GPL: General Public License
    • 일반 라이선스
    • 소스코드, 바이너리 파일배포
    • 사본, 수정본 또한 gpl로 배포

1.11.4 BSD Unix

  • unix 버전관리 subversion
  • linux 버전관리 git
profile
개발자가 되고 싶은 학부생의 꼼지락 기록

0개의 댓글