CS

[운영체제] OS(조르디 CS강의)

2023. 10. 29. 21:13
목차
  1. Computer
  2. Process/Thread
  3. CPU Scheduling
  4. Memory
  5. 출처

Computer

OS를 사용하는 이유(개발자 입장)

  • 주요 구성 요소
요소 역할
CPU Central Processing Unit(중앙 처리 장치): 연산
Memory(주 기억 장치, RAM) 데이터 저장(휘발성)
(SSD,HDD,…)보조 기억 장치 데이터 저장
I/O 장치 모니터, 키보드, 마우스 등
  • OS가 위에 언급된 구성 요소를 관리한다
    • 프로세스 관리 및 CPU스케줄링
    • 메모리 관리
    • 보조 기억 장치 데이터(파일)관리
    • I/O처리
  • 개발자가 OS를 알고있어야 하는 이유
    • 추후 AWS서버에서 램, CPU를 설정할때 사용량에 관련해서 지나치게 비용지불을 하지 않아도 된다

 


Process/Thread

Process(프로그램 실행 단위)

프로그램을 실행 → 하나의 프로세스가 생성 → CPU할당과 메모리에 적재

  • 응용 프로그램이 Memory에 적재되고, CPU를 할당 받아서 실행되는것
    • 모든 프로그램은 RAM에서 읽어서 작동이 된다.(RAM 위에서 작동된다)
  • 프로세스 메모리 영역
    • Code, Data, Heap, Stack
  • PCB(Process Control Block): 프로세스 실행과 관련된 전반적인 정보 저장
  • Context Switching(문맥 교환)
    • 기존에 수행 중이던 프로세스에 대해 PCB에 백업
    • 새로운 수행할 프로세스에 대해 PCB에 로드

PCB와 Context Switching 그림설명

CPU1개에 4개의 프로세스가 작동중이라고 가정

유저가 줌으로 실시간 화상회의를 하는 와중에 PPT를 작업하는중이라고 가정한다면

CPU는 PPT PCB와 줌 PCB를 번갈아가면서 작업해야할것이다.

이때 일어나는게 Context Switching 이다.

CPU가 PPT작업중
줌을 작업하기 위해 PPT는 PCB에 백업

 

Thread

  • 프로세스를 구성하는 실행 흐름 단위
  • 프로세스 메모리 영역을 공유해서 사용한다.
    • Thread 마다 Stack은 분리해서 사용한다.(이유는 만일 스택에 쓰레드1이 하는일 들어가고 쓰레드 2가 하는일이 Stack에 들어간다음에 쓰레드 1이하는일이 끝나면 스택 특성상 쓰레드 2가하는일이 먼저빠져야하는데 쓰레드1이 한일은 갇히게 된다.
  • 흔히 프로세스에 비해 쓰레드는 가볍다(경량 프로세스)
    • 이렇게 말하는 이유는 프로세스가 생성될때는 메모리영역 4개랑, PDB새로 생성해야할정도로 CPU에 부담이 가는데 쓰레드는 그정도까지는 아니다.(Memory할당이 적다)

 

Multi Process

  • 하나의 응용 프로그램에서 다수의 Process를 동시에 실행하는 것
  • 하나의 부모 프로세스가 여러 개의 자식 프로세스를 생성한다
  • 하나의 프로세스가 문제가 생겨도 다른 프로세스를 사용하면 되기 때문에 서비스 안정성을 확보 할 수 있다.(동일한 서버 역할을 하는 서버 프로세스를 다수 생성하기 때문)
  • Context Switching에 대한 Overhead가 있다.(그만큼 자원을 사용한다)
  • Process사이에서는 자원 메모리를 공유한다(IPC사용)
    •  
    •  

 

Synchronize(동시성)

  • 동시성 이슈(Race Condition)
    • DB 트랜잭션 문제랑 비슷하다고 생각함(같은 자원을 여러개의 쓰레드가 사용하다보면 문제가 생김)
    • 공통된 자원을 여러 쓰레드가 사용할때 적절한 방법: 사용시 락을 걸어야 한다. 다 완료하면 Unlock
    • 공유 자원: 각 Process 혹은 Thread가 동시에 접근할 수 있는 자원, 변수 등
    • 임계 영역(Critical section): 동시성 이슈가 발생하는 코드(로직) 영역
      • 해결방법: 뮤텍스(Mutex), 세마포어, 모니터
      • Mutex(화장실 한칸): 프로세스(혹은 Thread)가 사용시점에 Lock을 걸고 사용이 끝난 후 Unlock
      • Semaphore(화장실 여러칸): 공유 자원에 대해서 동시에 접근할 수 있는 프로세스(혹은 Thread)의 수를 제어함

 

교착 상태(Dead Lock)

조르디 강의 ppt참고

  • 꼬리가 꼬리를 물면서 나가지 못하는 상태
  • 그림으로 이해하는게 편하다
  • 필요 조건
    • 상호 배제: 하나의 프로세스가 공유 자원을 점유하고 있을 때 다른 프로세스는 기다려야한다
    • 점유와 대기: 특정 프로세스가 공유 자원을 점유한 상태에서 다른 공유 자원을 사용하기 위해 대기하고 있는 상황이 있어야 한다
    • 비선점: 다른 프로세스가 점유한 자원을 강제로 빼앗을 수 없음
    • 환형 대기: 각 프로세스가 서로가 필요한 공유 자원을 점유하고 대기하는 원형을 이루어야한다

 


CPU Scheduling

  • CPU는 여러 작업을 동시에 수행할 수 없지만, 처리해야할 Process는 다수이기 때문에 적절한 스케줄링을 통해서 작업을 수행한다.
  • 스케줄링 방식: 먼저 요청한 프로세스 작업을 먼저처리할 수도 있겠지만 빨리 처리해야 될 작업의 수행이 딜레이 될 수도 있고, 처리에 아주 짧은 시간이 소요되는 작업도 다른 작업에 밀려 오래 기다려야하는 비효율이 발생한다.
    • 예시: 응급실 상황
  • 스케줄링 종류
    • 비선점형 스케줄링
      • 어떤 프로세스가 다른 프로세스에 인해 작업 중인 CPU를 선점할 수 없다.(뺏어갈 수 없다)
      • FCFS(First Come First Served): 가장 먼저 요청한 프로세스를 가장 먼저 수행함
      • SJF(Shortest Job First)(*선점형과 비선점형으로 나뉜다): 실행 시간이 짧은 프로세스 가장 먼저 수행, 긴 수행시간 가진 프로세스는 대기시간이 너무길거나 실행되지않는(고아)현상 발생
      • 우선 순위(선점형과 비선점형으로 나뉨): 프로세스에 대한 우선순위를 둬서 순위가 높은 프로세스를 먼저 수행함
    • 선점형 스케줄링
      • 어떤 프로세스가 다른 프로세스로 인해 작업 중인 CPU를 선점할 수 있다(뺏을 수 있다)
      • Round Robin(RR): 할당시간만큼 각각의 프로세스가 번갈아가면서 작업
        • ex. 할당시간이 10초라면 A(10초), B(10초), C(10초), A(10초), B(10초)….
        • 할당 시간이 너무 짧으면 Context Switching이 자주 발생할 수 있기 때문에 비용이 증가한다.
      • Multi-Level Queue(다단계 큐): Round Robin이 유명하고 많이 사용해서 사실 크게 기억할건 없다. 그냥 존재한다 정도만

 


Memory

  • 모든 프로그램(프로세스)은 메모리(RAM) 위에서 동작한다
  • 이론상 RAM이 부족하면 프로세스를 수행할 수 없지만, 가상 메모리 기능을 통해 부족한 RAM을 SSD, HDD등을 할당해서 사용한다 이럴경우 RAM에 비해 SSD, HDD등이 속도가 더 느리기 때문에 성능이 저하된다.
  • Page Fault: 이제 램에서 커버가 안되는 용량을 SSD, HDD에 저장을 하는데 이후 다시 RAM에서 실행하고자할때 RAM에 없는 경우를 말한다
  • Page 교체 알고리즘
    • Page: 가상 메모리 블럭(가상 메모리를 사용하는 운영체제에서 최소 단위)
    • Page Fault: 자주 발생하면 성능이 저하된다.(Thrashing)
    • 페이지 폴트 발생횟수를 체크
    1. FIFO(Fisrt-In-First-Out)
      • 먼저 들어간 페이지를 밀어낸다
      • 한마디로 queue생각하면 편함(7 0 1순으로 들어오면 교체될때도 7 0 1순으로 교체됨)
    2. LRU(Least Recentily Used)
      • 가장 오랫동안 사용되지 않을 것 같은 페이지 교체(미래 사실 활용)
      • 들어와있는 페이지중 제일 나중에 있는 reference string 페이지를 프레임에서 빼줌
        • ex. 7 0 1 이 3개가 프레임안에 있는데 2가 새로들어옴 이때 7 0 1중 들어올 다시 들어오게 될때 제일 마지막에 들어오는수를 빼줌
      • 여러분의 알고리즘이 얼마나 성능이 좋은 지 평가하는데 사용
    3. LRU(Least Recently Used)
      • 가장 오랫동안 사용되지 않았던 페이지 교체(과거의 사실 활용)
      • 7 0 1페이지 프레임 reference string으로 0과 1이 최근에 나왔으면 나온지 오래된 7이 다음 페이지프레임 변경때 바뀐다

 

 


출처

- 조르디 CS강의

- 운영체제, Operating System Concepts(박민규 옮김) 흔히 말하는 공룡책

 

 

 

저작자표시 (새창열림)

'CS' 카테고리의 다른 글

[네트워크] 네트워크 계층  (1) 2024.09.22
[REST API]REST API란 무엇인가  (2) 2023.08.04
  1. Computer
  2. Process/Thread
  3. CPU Scheduling
  4. Memory
  5. 출처
'CS' 카테고리의 다른 글
  • [네트워크] 네트워크 계층
  • [REST API]REST API란 무엇인가
Ash_jisu
Ash_jisu
JisuStoryAsh_jisu 님의 블로그입니다.
Ash_jisu
JisuStory
Ash_jisu
전체
오늘
어제
  • 분류 전체보기 (136)
    • 알고리즘 (68)
      • 자바 (68)
      • C++ (0)
    • 자바(Java) (18)
    • 스프링 (7)
      • 테스트 (3)
    • 데이터베이스 (3)
      • SQL (7)
      • JPA (1)
      • ElasticSearch (3)
    • CS (3)
    • 배포, 운영 (6)
      • Infra (3)
    • 디자인 패턴 (8)
    • 기타 (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 백준
  • 백준 #BFS
  • 자바
  • dp
  • 프로그래머스 #알고리즘
  • Elasticsearch #최적화
  • Elasticsearch #Testcontainer #Test
  • bfs #알고리즘
  • API테스트 #Postman
  • db
  • 백준 #DP
  • swea #구현
  • 알고리즘 #bfs
  • 코딩테스트
  • BFS
  • 알고리즘 #다익스트라
  • 배포
  • 자바 #백준
  • 자바 #그리디
  • java

최근 댓글

최근 글

hELLO · Designed By 정상우.
Ash_jisu
[운영체제] OS(조르디 CS강의)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.