컴퓨터 공학 기초 (2) 운영체제

young·2022년 8월 1일
0

7/21~8/18 Section 4 TIL

목록 보기
9/22

운영체제

1️⃣ 운영체제 (Operating System, OS)

컴퓨터의 하드웨어를 관리하고, 하드웨어와 소프트웨어, 사용자를 매개하는 프로그램
응용 프로그램이 실행되고, 시스템 자원을 사용할 수 있도록 권한과 사용자를 관리한다.

  1. 프로세서, 기억장치, 입출력장치, 파일 및 정보 등의 시스템 자원을 관리한다.
  2. 자원을 효율적으로 관리하기 위해 자원의 스케줄링 기능을 제공한다.
  3. 사용자와 시스템 간의 인터페이스 제공
  4. 시스템의 각종 하드웨어와 네트워크 관리 및 제어

시스템 콜: 응용 프로그램이 운영체제에 시스템 자원을 사용하기 위해 요청을 보낼 수 있는 API

2️⃣ 프로세스

실행 중인 프로그램의 코드가 메모리에 적재되어 CPU가 해당 명령어를 하나씩 수행하고 있는 상태를 의미한다.

특정 목적을 수행하기 위해 나열된 작업의 목록
프로세서에 의해 실행 중인 프로그램

프로세스의 구성요소

  1. 유저 메모리 영역 관리
    프로세스 별로 가지는 독립적인 유저 메모리 영역을 관리하는 관리 테이블

  2. 핸드 테이블
    프로세스에서 사용하는 모든 핸들에 대한 커널 객체 포인터 정보를 배열 형태로 가지고 있는 공간

  3. 독립적인 메모리 공간
    페이징 기법을 이용하여 프로세스마다 별도의 고유한 메모리를 사용할 수 있게 한다. (Code, Data, Stack, Heap)

프로세스 상태

  • 실행(Run): 프로세스가 프로세서를 차지하여 서비스를 받고 있는 상태
  • 준비(Ready): 실행될 수 있도록 준비되는 상태
  • 대기(Waiting): 입/출력을 기다리는 상태

프로세서

  • 하드웨어 프로세서: CPU. 컴퓨터 내에서 프로그램을 수행하는 하드웨어 유닛. 적어도 하나 이상의 ALU와 레지스터를 내장한다.

  • 소프트웨어 프로세서: 워드프로세서, 컴파일러 등. 데이터 포맷을 변환하는 역할을 수행하는 데이터 처리 시스템.

3️⃣ 스레드

명령어가 CPU를 통해서 수행되는 객체의 단위
프로세스 내에서 실행되는 흐름의 단위

하나의 프로세스 내에는 반드시 1개 이상의 스레드가 존재한다.
스레드는 같은 프로세스에 있는 자원과 상태를 공유한다.
하나의 스레드에서 오픈한 파일을 다른 스레드가 사용할 수 있다.
프로세스가 종료되면 스레드도 함께 종료된다.

여러 개의 작업 단위로 구성된 프로그램에서 요청을 동시에 독립적으로 처리하기 위해 필요하다.

시작해서 종료할 때까지 한 번에 하나씩 명령을 수행한다.
스레드는 다른 스레드와 독립적으로 동작한다.
각 스레드마다 call stack이 존재한다. 나머지 메모리 영역 Data, Code, Heap 영역은 공유한다.
각 스레드의 실행 및 종료 순서는 예측할 수 없다.

스레드의 구성요소

가상 CPU, 수행코드, 처리 데이터로 구성된다.

💡 싱글 스레드

프로세스가 단일 스레드로 동작하는 방식
일련의 처리를 단일 스레드만으로 직렬 처리하는 프로그래밍 방법
하나의 레지스터, 스택으로 표현한다.
e.g. 자바스크립트

싱글 스레드의 장점

  • 자원 접근에 대한 동기화를 신경쓰지 않아도 된다.
  • 문맥 교환 작업이 필요 없다.
  • 프로그래밍 난이도가 쉽고, CPU 메모리를 적게 사용한다.

싱글 스레드의 단점

  • 여러 개의 CPU를 활용하지 못한다.
  • 하나의 작업이 완료되어야 다른 작업을 수행한다.
  • 에러 처리를 못하는 경우 멈춰버린다.

💡 멀티 스레드

하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 방식

멀티 프로세스: 여러개의 CPU를 사용하여 여러 프로세스를 동시에 수행하는 것

멀티 스레드의 장점

  • 작업을 분리해서 수행하므로 실시간으로 사용자에게 응답할 수 있다.
  • 한 프로세스를 여러 프로세서에서 수행할 수 있으므로 훨씬 효율적이다.

멀티 스레드의 단점

  • 디버깅이 까다롭다.
  • 단일 프로세스 시스템의 경우 효과를 기대하기 어렵다.
  • 문맥 교환 작업을 요구한다.
  • 자원 공유의 문제가 발생하여, 하나의 스레드에 문제가 발생하면 전체 프로세스가 영향을 받는다.

💡 동시성과 병렬성의 차이

싱글 코어와 멀티 코어

동시에 돌릴 수 있는 스레드 수는 컴퓨터에 있는 코어 개수로 제한된다.
운영체제는 각 스레드를 시간에 따라 분할하여 여러 스레드를 일정 시간마다 돌아가며 실행되도록 한다. ➞ 시분할

동시성: 시분할 방식으로 동시에 수행되는 것처럼 착각을 불러일으킴
병렬성: 멀티 코어 환경에서 여러개의 스레드가 실제로 동시에 수행됨


https://parksb.github.io/article/5.html

profile
즐겁게 공부하고 꾸준히 기록하는 나의 프론트엔드 공부일지

0개의 댓글