운영체제 2주차 스터디

fpg1·2023년 9월 22일

운영체제 2주차 스터디노트

운영체제 개요 & 컴퓨터 시스템 동작원리

프로그램에 대해 설명해주세요

  • 프로그램은 정적인 개념으로 저장매체에 저장된 실행파일

프로세스에 대해 설명해주세요

  • 프로그램이 메모리 상에 올라와 컴퓨터의 자원(메모리, CPU)를 할당받아 실행 중인 상태

프로세스의 메모리 공간에 대해 설명해주세요

  • 프로레스의 메모리영역은 다음과 같습니다
    • 코드영역(테스트영역)
      • 실행할 수 있는 코드, 기계어로 이루어진 명령어 저장
      • 데이터가 아닌 CPU가 실행할 명령어가 담겨서 쓰기가 금지된 영역(read-only)
    • 데이터영역
      • 잠깐 썼다가 없앨 데이터가 아닌 프로그램이 실행되는 동안 유지될 데이터 저장(e.g. 전역변수)
    • 힙영역
      • 프로그램을 만드는 사용자, 프로그래머가 직접 할당할 수 있는 저장공간
    • 스택영역
      • 데이터가 일시적으로 저장되는 공간 (e.g. 매개변수, 지역변수)

쓰레드에 대해 설명해주세요

  • 스레드란 프로세스를 구성하는 실행의 흐름단위입니다

프로세스와 쓰레드가 어떤 차이가 있는지 예시를 들어 설명해주세요

  • 프로세스는 각각 별도의 주소공간을 독립적으로 할당받지만, 쓰레드는 이 중 stack만 따로 할당받고 나머지 영역은 스레드끼리 서로 공유한다.

쓰레드의 메모리 공간(스택, 데이터, 코드)에 대해 설명해주세요

  • 스레드ID, 프로그램 카운터를 비롯한 레지스터값, 스택 등 실행에 필요한 최소한의 정보

프로세스 제어블록(PCB)에 대해 설명해주세요

  • PCB란 운영체제가 시스템 내의 프로세스들을 관리하기 위해 프로세스마다 유지하는 정보들을 담는 커널 내의 자료구조

PCB에는 어떤 정보가 담겨있을까요?

  • PCB는 다음과 같은 요소들로 구성되어 있다
    • 프로세스의 상태(process state): CPU를 할당해도 되는지 여부를 결정
    • 프로그램 카운터(program counter)의 값: 다음에 수행할 명령의 위치
    • CPU 레지스터(CPU register)의 값: CPU 연산을 위해 현 시점에 레지스터에 어떤 값을 저장하고 있는지
    • CPU 스케쥴링 정보(CPU scheduling information): 해당 프로세스의 CPU 스케쥴링에 필요한 정보
    • 메모리 관리 정보(memory management information): 메모리 할당을 위해 필요한 정보
    • 자원 사용정보(accounting information): 사용자에게 자원 사용 요금을 계산해 청구하는 용도
    • 입출력 상태 정보(I/O status information): 프로세스가 오픈한 파일정보 등 입출력 관련 상태 정보

쓰레드 제어블록(TCB)에 대해 설명해주세요

  • TCB는 다음의 구성을 가집니다
    • Thread ID: 스레드 식별자
    • stack pointer: 프로세스 안의 스레드의 스택 포인터
    • 프로그램카운터
    • register
    • PCB 포인터

멀티 프로세스에 대해 설명해주세요

  • 여러 프로세스를 동시에 실행하는 것

멀티 쓰레딩에 대해서 설명해주세요

  • 여러 스레드로 프로세스를 동시에 실행하는 것

프로세스 수행 상태변화과정에 대해 설명해주세요

  • 생성상태: 메모리에 적재되어 PCB를 할당받은 상태
  • 준비상태: 차례를 기다리고 있는 상태
    자신의 차례가 되어 CPU를 할당받으면 실행상태가 된다
  • 실행상태: CPU를 할당받아 실행중인 상태
    타이머인터럽트 발생시 다시 준비상태가 되고,
    입출력장치 작업을 기다려야한다면 대기상태가 됩니다
  • 대기상태: 입출력작업을 기다리는 상태(blocked)
  • 종료상태: 프로세스가 종료된 상태. CPB와 프로세스의 메모리가 정리된다

문맥교환(context switch)에 대해 설명해주세요

  • 기존의 실행중인 프로세스 문맥을 백업하고 새로운 프로세스 실행을 위해 문맥을 복구하는 과정

문맥교환은 언제 발생하나요?

  • 타이머 인터럽트가 발생하는 경우나 실행 상태에 있던 프로세스가 입출력 요청 등으로 봉쇄상태로 바뀌는 경우

문맥교환발생과정에 대해서 조금 더 상세히 설명해주세요

  • 사용자 프로세스가 CPU를 할당받고 실행 중에 타이머 인터럽트가 발생하면 CPU 제어권은 운영체제로 넘어간다
    운영체제는 타이머인터럽트 처리루틴으로 가서 직전까지 수행 중이던 프로세스의 문맥을 저장하고 새롭게 실행시킬 프로세스에게 CPU를 이양한다
    이 과정에서 프로세스 상태는 실행중이던 프로세스는 준비상태로 바뀌고, 새로 CPU를 할당받은 프로세스는 실행상태가 된다
    또한 실행중이던 프로세스의 문맥 정보를 자신의 PCB에 저장하고 새롭게 할당받을 프르소세의 문맥을 PCB로부터 하드뒈어로 복원시킨다

fork() 명령어에 대해 설명해주세요

  • fork는 자기자신 프로세스의 복사본을 만드는 시스템 호출입니다

프로세스끼리 협력하는 방법에 대해서 설명해주세요

  • 프로세스 간의 자원을 공유하고 데이터를 주고받는 것을 IPC라 합니다.
    • 파일을 통한 프로세스 간 통신, 공유메모리를 통한 프로세스 간 통신이 있습니다

회고

  • 프로세스 메모리 공간에 대해 들으니 다시 C언어를 공부하면 메모리 공간을 그려보면서 이해할 수 있을꺼 같다
profile
backend

0개의 댓글