본문 바로가기

_스타디

_운영체제_중간고사_20210615_21-1

반응형
  • File 파일 : 입출력 장치의 추상화

 

  • 가상 메모리 : Virtual-memory :  메인 메모리와 디스크 입출력 장치의 추상화
  • 프로세스 : 프로세서, 메인메모리, 입출력장치 모두의 추상화 --> 실행 中 프로그램에 대한 추상화                        --> Concurrent Execution(병행 실행) 하고있는 것 처럼 보임.
    *실제 운영체제는 Context-switch(문맥 교환) 방식으로 여러 프로세스 교차 실행
                             ┖> 프로세스가 실행하는데 필요한 모든 status 정보
  • 쓰레드 : 한 process 內 동작하는 여러 실행의 흐름
    --> 각 쓰레드는 해당 프로세스의 컨텍스트에서 실행되며, 동일한 코드, 전역 Data 공유
  • 가상주소공간
    • 프로그램 코드 , 데이터 : 실행가능 목적파일로 초기화되는 코드 & 데이터 영역
    • 힙(heap) : 실행시, 동적할당되는 고정 크기 영역
    • 공유 라이브러리 : 공유 라이브러리(ex C표준, Math) 코드, 데이터 저장
    • 스택(stack) : 함수 호출 및 리턴시 사용되는 지역변수, 리턴 값을 저장하는 곳
    • 커널 라이브러리 : 운영체제의 커널이 저장되는 곳
  • 컨트롤러(Controller) : 디바이스 자체가 칩셋, 시스템의 마더보드(또는 메인보드)에 장착
  • 어뎁터(Adapter) : 마더보드의 슬롯에 저장되는 카드.
  • 운영체제
    :Computer H/W 관리하는 프로그램. 사용자와 H/W사이 중재자 역할.
    • 목표 
      • 사용자 프로그램 실행
      • 컴퓨터 시스템을 사용자가 쉽고 편리하게 사용하여 문제 해결
      • 컴퓨터 하드웨어의 효율적 관리
  • 컴퓨터 시스템 4大 구성요소
    #하드웨어 : 기본 계산 자원 제공 (Computing resources)
                    CPU, MEMORY, I/O Devices

    #운영체제 : 하드웨어 사용 제어 & 중재

    #응용 프로그램 : User의 계산 문제 해결을 위해
                           System resources들이 어떻게 사용될 것인지 정리.

    #사용자 : 사람, 기계, 다른 컴퓨터 등
                 User1             User2
                    |                   |
               compiler         text editer
                    |                   |
                   운   영    체   제
                             |
                  computer systems
  • 운영체제 정의
    • 운영체제는 자원할당기(Resource allocater)
      -모든 자원들을 관리하고 스케줄(Schedule)
    • 제어 프로그램
      -프로그램 실행을 제어
    • 커널
      -Always 메모리에 상주
    • Bootstrap program
      -전원 켜지면 실행되는 초기 프로그램
      -펌웨어 라고도 함.
      -시스템의 모든 사항을 초기화.
      -운영체제의 커널을 찾아 메모리에 적재 후 실행.
  • 컴퓨터 시스템 연산
    • I/O Devices와 CPU는 병행실행(Concurrent Execution)
      #입출력 장치 제어기(IO Device Controller)
      -Local buffer를 가짐.
      -IO는 장체와 지역 버퍼 사이 수행.
      -연산 종료시 인터럽트(Interrupt)사용.
  • Interrupt
    • CPU에 인터럽트 신호가 들어오면 실행.
    • 작업을 멈추고 고정된 위치에 Interrupt Service Routine 실행.
      -trap 또는 Exception은 S/W가 생성한 인터럽트.
  • 인터럽트 핸들링.
    • 운영체제는 레지스터, 프로그램 카운터 저장.
      -실행中 시스템 상태 보존.

      *H/W가 제공하는 Interrupt : 벡터 인터럽트 시스템
      *polling : 벡터는 누가 인터럽했는지 알 고 있으나
                   CPU는 모르기에 누가 인터럽트 했는지 일일히 물어봄. <S/W 인터럽트>
  • I/O Structure : 입출력구조
    • System Call
      - 사용자가 입출력 종료시까지 기다리도록 운영체제에 요청.
    • Device-status-table
      - 각 IO Devices의 상태 저장.
      *IO명령을 실행하면, 입출력 종료시에만 프로그램 제어 이동.
  • Storage Structure : 저장장치구조
    • Main Memory : 주로 DRAM으로 구성. 임의 접근(Random access), 일반적으로 휘발성
      • Secondary Device :  大용량, 비휘발성.
        -자기 디스크 -> track 와 sector 로 분할.
                         -> Disk Controller는 장치와 computer 간의 논리상호작용
        -Solid State Disk -> 빠름, 비휘발성.
  • 저장장치계층 : Hierarchy
    • 계층으로 구성
    • 캐싱(Caching)
      • 더 빠른 저장장치로 정보를 복사.
      • 주 메모리는 보조 저장 장치로 캐싱.
    • 운영체제는 각 장치 제어기마다 장치 드라이버 내장.
  • 캐싱
    • 더 느린 저장장치(원본)에서 사용中 정보의 부분을 더 빠른 저장장치로 복사.
    • 사용 中 정보가 더 빠른 저장장치(캐시)에 있는지 조사.
    • 캐시의 크기는 원본의 저장장치보다 더 작음. 캐시관리가 중요함.
  • Direct Memory Access 직접 메모리 접근
    • 고속 전송이 가능한 IO 장치에 사용.
    • CPU의 개입 없이 메모리로부터 자신의 버퍼 장치 or 버퍼 or 메모리로부터 데이터블록 전송.
    • 블록 전송 완료시마다 인터럽트 발생.
  • 단일 - 다중
    • Single-Processor System
      -CPU 단 한개
      -디스크 제어기 등 특정 장치 처리기.
    • Multi-Processor System
      -다중 처리기 시스템 -> 병렬 시스템, 멀티 코어 시스템
      -증가된 처리량(throughput)
      -규모의 경제 -> 저렴쓰
      -증가된 신뢰성.
      • symmetric multiprocessing ( 대칭적 다중처리) --> cpu0  cpu1  cpu2
                                                                          레지   레지  레지
                                                                          캐시   캐시  캐시
                                                                             메    모    리

      • asymmtric multiprocessing (비대칭 다중처리)
  • 클러스터형 시스템 (Clustrered System)
    • 둘 이상의 독자적 시스템들을 연결해 협력 동작.
    • Storage-area Network 사용해 저장장치 공유.
    • 일부 노드 고장에도 작동하는 고가용성(High-Availbility)
      • 비대칭 클러스터링 - 한 머신 working 中 다른 머신 대기.
      • 대칭 클러스터링 - 여러 노드들이 응용수행 후 서로 모니터.
    • 고성능 컴퓨팅을 위해 병렬로도 사용.
    • 공유 Data에 대한 충돌되는 연산을 피함.
    • 동기화가 필요한 클러스터에선 분산 잠금 관리자(DLM) 사용.

      *최근에는 빅데이터 저장 및 처리를 위해서 구성.
      • 분산 파일 시스템 구성
      • HDFS(Hadoop Distributed File System)
      • MapReduce 병렬 처리
  • 다중 프로그래밍
    • CPU가 수행할 작업을 항상 하나는 갖도록 작업(JOB, PROCESS) 구성.
    • 운영체제는 한번에 여러 작업을 메모리에 적재.
      => 동시에 실행하는 것처럼 보임. 
             CONCURRENT 실행. 병렬X
  • 시분할 TIME-SHARING
    • 다중 프로그래밍의 논리적 확장.
    • 사용자는 각각 자기 프로그램과 상호작용.
    • 응답시간(RESPONSE TIME)이 짧아야 하며 통상 1초.
      -> 운영체제가 스케줄링 해줘야함.
                            ┖ 기다리고 있는 job 中 (현재 CPU 사용 안하고 있는 애들)
                                어떤 프로그램을 실행할 것인지 결정.
    • 각 사용자는 메모리에 최소 하나의 프로그램을 가짐
          ┖ 프로세스
    • 프로세스가 모두 메모리에 놓일 수 없는 경우.
    • 메모리 -> DISK, DISK-> 메모리로.
    • --> 스와핑 SWAPPING
    • 운영체제는 인터럽트-구동식.
  • 운영체제연산 - 이중연산모드
    • 운영체제 코드의 실행과 사용자 정의 코드의 실행을 구분.
      ->운영체제 보호.
      ->사용자 USER모드, 커널 SUPERVISIOR모드, 시스템모드, 특권모드.
    • 하드웨어가 모드 비트 제공.
      ->커널모드 0, 사용자 모드 1
      ->일부 명령을 특권 모드로 지정하여 커널 모드에서만 실행되도록.
    • CPU의 다중 모드 지원이 증가 추세.
      ex)가상 머신 별도 지원 모드비트

    • TIMER INTERRUPT
      -무한루프를 돌거나 자원 독점을 하는 경우 인터럽트가 발생.
      -운영체제가 카운터의 초기값 세팅. 특권 명령
    •  
  • 프로세스 관리
    • 프로세스 : 실행 中 프로그램.
      -프로그램은 수동적 객체, 프로세스는 능동적 객체.-한 프로세스 內 여러개의 프로세스(스레드) 존재 가능.
    • 다중 쓰레드 프로세스는 여러개의 프로그램 카운터를 가짐.
      -단일 CPU에서 멀티플랙싱(병행(concrruent)실행).

      -여러 CPU에서 병렬(PARREL)실행.
  • 운영체제가 하는 일
    • CPU의 프로세스와 쓰레드 스케줄.
    • 프로세스 일시정지와 재수행
    • 프로세스 동기화를 위한 기법 제공.
    • 프로세스 통신 기법 제공.
    • 교착상태 처리 기법 제공.
  • MAIN MEMORY
    • CPU와 입출력 장치에 의해 빠른 접근이 가능한 DATA의 저장소.
    • 메모리 內 프로그램이 상주 ->폰 노이만 컴퓨터의 특징.
  • I/O subsystem
    • buffering : 전송 中 Data 임시 저장.
    • Caching : Data의 일부를 고속 저장장치에 저장.
    • Spooling : 한 작업의 출력을 다른 작업의 영역과 중첩.
  • 보호 : 프로그램, 프로세스, 사용자 접근 제어
  • 보안 : 외부 접근 제어

    * 배열 : 연속적으로 저장된 메모리
                ┖ 중간에 삽입 삭제가 일어났을 때, 그 아래를 전부 수정해야 함.
    ex) 연결 리스트는 커널 알고리즘, 배열, 큐에 사용.


  • 이진 검색 트리 binary serch tree
    • balanced 트리는 log n만큼 걸림.
      ex)1024인경우, 최악의 경우 1024만큼 걸리지만, balanced 인 경우 길어도 10단계임.
       
  • 클라이언트 : 서비스요청.

  • System call 매개변수 전달.
    • 1. 레지스터 內 넣어서 전달.
    • 2. 메모리 內 블록이나 Table에 넣어서 블록의 주소가 레지스터 內 매개변수.
    • 3. 스택에 push 해서 전달.
  • 모노리식 구조 Monolitc Structure
    • 특정한 구조 없이 커널의 모든 기능을 단일 주소 공간에서 실행되는 단일 정책 이진 파일
  • System Boot
    • 부팅 : 커널에 적재해 시동하는 절차.
    • 부트스트랩 프로그램 : Bootstrap loader 라고도 하며 Rom에 커널을 찾고 메모리에 적재, 수행 시작.
  • Process
    • Text section : 프로그램 코드
    • Program counter : 레지스터
    • Stack : 함수 매개변수, 복귀주소, 지역변수
    • Data section : 전역 변수
    • heap : 동적 할당 메모리
  • 프로세스 상태
    • new -> ready -> running -> waiting -> terminated
                                              ┖ 입출력 완료를 기다림.
  • 프로세스 제어 블록 ( Process Control Block )
    • 특정 프로세스의 여러 정보 수록
      프로세스 상태, 번호, Program Counter, 레지스터, 스케줄링 정보, 메모리 관리 정보, 회계 정보
  • 스케줄러 (scheduler)
    • 단기(CPU)스케줄러 : 메모리에 있는 준비 큐 中 하나에 cpu 할당
    • 장기(작업)스케줄러 : 디스크 상에 있는 프로세스를 준비 큐로 저장

      *중기 스케줄러 : 프로세스를 디스크에서 메모리로 불러와 중단 지점부터 실행 재개
                                                      ┖ swapping
  • 문맥 교환 ( context switch )
    • 현재 프로세스의 상태를 보관하고, 새 프로세스의 상태를 복구하는 작업
    • 문맥 : pcb에 저장된 상태
  • 프로세스 생성
    • fork -> system call 을 통해 부모 프로세스가 자식 프로세스 생성.
      • 부모 자식간 자원 공유 안됨.
    • 주소 공간 (address space)
      • 부모 프로세스의 복사본을 가짐.
    • 부모 프로세스는 wait() system call 을 사용해 자식 프로세스의 종료를 기다림.
      • wait() 시스템 콜은 물론 상태정보와 종료된 프로세스의 pid 리턴.
        pid = wait(&status)
      • 부모 프로세스가 wait() 안했는데 종료되면 자식프로세스는 좀비.
      • 부모가 wait 없이 종료하면 자식은 고아.
    • #IPC(Interprocess Communication)
      • 정보공유
      • 계산 가속화 --> 병렬 실행
      • 모듈성
      • 공유 메모리 : 운영체제가 아닌 사용자 프로세스 제어 하 통신
      • 메세지 전달.
    • 베포 구독 모델
      • 메모리가 토픽으로, 카톡이나 IoT
    • POSIX : 시스템 몫의 호환성
                 System Call 의 함수 이름(시그니처)가 다르면 호환 X
      • IP주소 -> 컴터까지의 주소.
      • 포트번호 -> 프로세스 구별
      • udp : 편지 
      • tcp : 전화
    • #파이프
      • 단방향 -> 반이중
      • 양방향 -> 전이중
      • ORDINARY PIPE
        • 생성한 프로세스이외에는 접근불가.
        • 주소가 생성, 자식과 통신'
      • NAMED PIPE
        • 부모자식없이 프로세스간 접근 가능.
    • 다중 쓰레드 프로세스
      • CODE DATA FILES    : 코드, 글로벌 데이터, 입출력 공유
      • 레지    레지   레지
      • 스택   스택    스택        -> 스택 포인터 포함.
      • = 서  로   독  립 =
    • 다중 쓰레드 장점
      • 응답성 증가
      • 자원 공유
      • 경제성
      • 규모 적용성
반응형