[CS]운영체제

윤재열·2022년 3월 1일
0

CS지식

목록 보기
4/16

운영체제

Byte Ordering 이란?

Byte Ordering이란 데이터가 저장되는 순서를 의미합니다. Byte Ordering의 방식에는 빅엔디안(Big Endian)과 리틀엔디안(Little Endian)이 있습니다.

  • Big Endian
    👉MSB가 가장 낮은 주소에 위치하는 저장 방식
    👉네트워크에서 데이터를 전송할 때 주로 사용됩니다.
    👉가장 낮은 주소에 MSB가 저장되므로, offset=0 인 Byte를 보면 양수/음수를 바로 파악할 수 있습니다.
  • Little Endian
    👉MSB가 가장 높은 주소에 위치하는 방식
    👉마이크로프로세서에 주로 사용됩니다.
    👉가장 낮은 주소에 부호값이 아닌 데이터가 먼저 오기 때문에 바로 연산을 할 수 있습니다.

메모리

  • 메모리는 컴퓨터에서 작업을 수행하기 위해 처리 대상이나 결과 등을 저장하기 위한 공간입니다.프로그램을 실행하기 위한 정보들은 메모리에 저장되어 처리됩니다.

프로세스와 쓰레드의 차이

프로세스

  • 정의 : 메모리에 올라와 실행되고 있는 프로그램의 인스턴스
  • 특징 :
    👉운영체제로부터 독립된 메모리 영역을 할당받습니다.(다른 프로세스의 자원에 접근x)
    👉프로세스들은 독립적이기 때문에 통신하기 위해 IPC를 사용해야 합니다.
    👉프로세스는 최소 1개의 쓰레드(메인 쓰레드)를 가지고 있습니다.

쓰레드

  • 정의 : 프로세스 내에서 할당받은 자원을 이용해 동작하는 실행 단위
  • 특징 :
    👉쓰레드는 프로세스 내에서 Stack만 따로 할당 받고, Code,Data,Heap 영역은 공유됩니다.
    (Stack을 분리한 이유는 Stack에는 함수의 호출 정보가 저장되는데,Stack을 공유하면 LIFO 구조에 의해 실행 순서가 복잡해 지기 때문에 실행 흐름을 원할하게 만들기 위해서입니다.)
    👉쓰레드는 프로세스의 자원을 공유하기 때문에 다른 쓰레드에 의한 결과를 즉시 확인할 수 있습니다.
    👉쓰데드는 자원을 공유하기 때문에 다른 쓰레드에 의한 결과를 즉시 확인할 수 있습니다.
    👉프로세스 내에 존재하며 프로세스가 할당받은 자원을 이용하여 실행됩니다.

컨텐스트 스위칭(Context Switching)

  • Context Switching이란 인터럽트를 발생시켜 CPU에서 실행중인 프로세스를 중단하고, 다른 프로세스를 처리하기 위한 과정입니다.

  • Context Switching은 현재 실행중인 프로세스의 상태(Context)를 먼저 저장하고, 다음 프로세르르 동작시켜 작업을 처리한 후에 이전에 저장된 프로세스의 상태를 다시 복구합니다.

  • 여기서 인터럽트란? CPU가 프로세스를 실행하고 있을 때, 입출력 하드웨어 등의 장치나 예외상황이 발생하여 필요함을 CPU에게 알리는 것을 말합니다.

멀티 프로세스 VS 멀티 쓰레드

멀티 프로세스

  • 하나의 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 1개의 작업을 처리하도록 하는 것

  • 특징 :
    👉1개의 프로세스가 죽어도 자식 프로세스 이외의 다른 프로세스들은 계속 실행됩니다.
    👉Context Switching을 위한 오버헤드(캐시 초기화, 인터럽드 등)가 발생합니다.
    👉프로세스는 각각 독립적인 메모리를 할당받았기 때문에 동신하는 것이 어렵스빈다.

멀티 쓰레드

  • 하나의 프로그램을 여러 개의 쓰레드로 구성하여 각 쓰레드가 1개의 작업을 처리하도록 하는 것
  • 특징 :
    👉프로세스를 위해 자원을 할당하는 시스템콜이나 Context Switching의 오버헤드를 줄일 수 있습니다.
    👉쓰레드는 메모리를 공유하기 때문에, 통신이 쉽고 자원을 효율적으로 사용할 수 있습니다.
    👉하나의 쓰레드에 문제가 생기면 전체 프로세스가 영향을 받습니다.
    👉여러 쓰레드가 하나의 자원에 동시에 접근하는 경우 자원 공유(동기화)의문제가 발생할 수 있습니다.

데드락(DeadLock)

  • 데드락(DeadLock) 또는 교착상태란 한정된 자원을 여러 프로세스가 사용하고자 할 때 발생하는 상황으로, 프로세스가 자원을 얻기 위해 영구적으로 기다리는 상태입니다.
  • 예를 들어 다음과 같은 상황에서 데드락이 발생할 수 있습니다.
    -자원 A를 가진 프로세스 P1과 자원 B를 가진 프로세스 P2가 있을 때, P1은 B를 필요로 하고 P2는 A를 필요로 한다면 두 프로세스는 P1,P2는 서로 자원을 얻기위해 무한정 기다리게 됩니다.
profile
블로그 이전합니다! https://jyyoun1022.tistory.com/

0개의 댓글