[운영체제] #6강

Junyoung Park·2022년 8월 2일
0

운영체제

목록 보기
6/25
post-thumbnail
  • CPU 클록: 초당 클록 사이클 수
  • CPU instruction cycles: 한 개 명령어 처리 주기

프로세스

추상화

  • 추상화: OS는 HW 자원 → 논리적 자원으로 추상화 + 리소스 사용 인터페이스 제공
  • 어플리케이션 사용성(Usability)
  • OS 자체에 대한 관리(Manageability)

HAL

  • Hardware Abstraction Layer: HW를 사용하기 위한 추상화 단계의 레이어
  • HW의 구체적 특징을 "숨기고" 일관적인 추상화 HW로 윗 계층에 제공
  • E.g.) 디바이스 드라이버: 추상화 HW에 맞춰 실제 장치와의 인터페이스 제공

CPU의 추상화

  • ISA(Instructin Set Architecutre): CPU 구분 기준
  • 프로그램은 ISA에서 수행하는 바이너리 코드의 집합
  • 동일한 ISA → 동일한 CPU
  • (1). 연산: 주어진 명령을 순차적으로 처리
  • (2). 컨트롤: 인터럽트 이벤트 발생 시 ISR 호출

프로그램과 프로세스

  • 소스코드 → 컴파일러 → 오브젝트 파일 → 링커 → 실행 가능한 파일
  1. 소스코드(.c file): 프로그램의 수행 작업을 프로그래밍 언어로 표현
  2. 컴파일러: 사람의 언어인 소스 코드 → CPU가 이해 가능한 기계어로 쓰인 오브젝트 파일로 변경
  3. 오브젝트 파일(.o file): 기계어로 구성 → 상대적 주소로 표현되어야 함(링커)
  4. 링커(Linkage editor): 오브젝트 + 라이브러리 → 실행 파일
  5. 실행 파일(.exe): OS에서 수행 가능한 파일 → 헤더, 텍스트, 데이터, 절대적 주소로 표현되어야 함
  • 컴파일러 + 링커는 OS, CPU에 따라서 서로 다른 형태의 파일 생성

프로세스의 개념

  • 프로세스: 실행 상태의 프로그램
  • CPU HW 자원을 서로 다른 프로그램이 사용하기 위해 만들어진 추상화 개념
  • 서로 다른 프로세스 간의 도메인(protection domain) 존재
  • 컨텍스트: 프로그램의 시작-끝까지 이루어지는 흐름, line by line + branch
  • 리소스: 프로세스 별 할당 자원(메모리 - 가상 주소 공간/텍스트, 데이터, 힙, 스택 등)

스레드

  • 프로세스 내 실행 유닛: OS가 컨텍스트를 관리하는 구체적인 실체
  • 레지스터 및 스택, PC의 집합: 프로세스 내에서 스레드는 코드, 데이터, 오픈 파일을 공유함

프로세스와 스레드 비교

  • 이전 프로세스 컨셉 = 스레드: 하나의 프로세스 내 단일 실행 유닛만 존재
  • 구 프로세스 컨셉 = 싱글 스레드 + 주소 공간
  • 현 프로세스 컨셉 = 멀티 스레드가 존재하는 곳, 스레드는 프로세스의 자원을 공유

메모리

  • 코드: 프로그램 코드, 머신 인스트럭션, 정적
  • 데이터: 전역 변수 및 데이터, 정적
  • 힙: 메모리 공간, 동적으로 할당됨 - malloc()
  • 스택: 일시적 데이터, 함수 파라미터, 리턴 어드레스, 로컬 변수, 동적

메모리 크기

  • 프로세스 단위 메모리 크기: 32비트 기준 4GB
  • 정적(코드, 데이터): 프로그램 이미지의 헤더 파일에서 컴파일 시 크기 결정
  • 힙: 동적 메모리 할당/해제 시
  • 스택: 시스템에 따른 최대 크기 제한 가능

  • Jab: 배치 시스템
  • Program: 실행되기 이전의 프로그램 이미지
  • Task: Job과 유사한 개념. CPU에서의 Task는 하나의 실행 흐름
  • Thread: 프로세스 내 실행 유닛
  • Processor: CPU
profile
JUST DO IT

0개의 댓글