면접 준비를 해보자 - 운영체제

americano4ever·2021년 11월 5일
1

운영체제

운영체제란 무엇인가?

하드웨어를 관리하고, 응용 프로그램과 하드웨어 사이에서 인터페이스 역할을 하며 시스템의 동작을 제어하는 시스템 소프트웨어입니다.

운영체제의 주요 기능으로는 프로세스 관리, 저장장치관리, 네트워킹, 사용자 관리, 디바이스 드라이버 관리가 있습니다.

커널이란 무엇인가?

컴퓨터의 메모리 자원을 효율적으로 사용하기 위해 운영체제 중 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려놓고 그렇지 않은 부분은 필요할 때 메모리에 올려서 사용하게 된다.

그 중 커널은 메모리에 상주하는 부분으로써 운영체제의 핵심적인 부분을 뜻합니다.

프로세스와 쓰레드의 차이를 설명해보세요

프로세스가 고유한 공간과 자원을 할당 받는 반면, 스레드는 프로세스 내의 자원은 공유하고 stack만을 할당 받습니다.

프로세스

  • 프로세스란 실행되고 있는 프로그램을 의미한다.
  • code, data, heap, stack영역을 가지고 있고 1개 이상의 메인쓰레드를 가진다.
  • 각 프로세스는 다른 프로세스에 접근할 수 없기 때문에 Inter Process Communication을 이용한다.

쓰레드

  • 프로세스 내에서 실행되는 하나의 실행단위
  • 독립적인 stack, register영역을 할당받는다.
  • 프로세스의 code, data, heap영역을 공유하고 있기 때문에 context switching 비용이 적게 든다.
  • context switching에서 해당 쓰레드가 코드를 어디까지 실행했는지는 레지스터 안에있는 program counter에 저장된다.
  • 레지스터를 독립적으로 가지는 이유는 CPU를 할당받았다가 스케쥴러에 의해 다시 선점되기 때문에 어느부분까지 수행할 수 있는지를 기록해야한다.

크롬 탭이 프로세스인지 쓰레드인지 설명해보세요

크로미움 브라우저는 다른 한탭에서 오류가 발생하였을 때 다른 탭에서 영향을 받지 않도록 하기 위해 멀티 프로세스로 구현되어 있습니다.

또한 멀티 프로세스를 채택함 으로써 보안과 격리(sandbox)상의 이점이 있습니다. 운영체제를 통해 프로세스의 권한을 제한할 수 있어 브라우저는 특정 프로세스가 특정 기능을 사용할 수 없게 제한할 수 있기 때문입니다.

참고 글

프로세스의 생성 과정에 대해 설명해보세요

프로그램이 프로세스가 되려면, 메모리의 빈공간에 올라가고, 동시에 프로세스 제어블록이 생성되어야 합니다. 이러한 과정을 거치면 프로그램이 프로세스가 됩니다.

프로세스 생성과정

a. OS 커널에 PCB를 생성b. 메모리 공간 할당c. 이진 파일 적재d. 프로그램 실행

IPC의 통신 과정 설명

우선 IPC는 서로 독립적인 구조를 가진 프로세스간의 통신방법을 의미합니다.

프로세스간의 통신을 위해 각 프로세스에서 공통적으로 접근가능한 메모리 공간을 활용하여 통신하게 됩니다.

대표적인 IPC 방법에는 pipe, 공유 메모리, 소켓, 메시지큐, 메모리맵을 통한 방법이 잇습니다.

첫번째는, PIPE (익명 파이프) 입니다. PIPE는 두 프로세스간 파이프를 연결해서 통신을 하는 방식입니다. 여기서 한 프로세스는 쓰기만 가능하고 다른 프로세스는 읽기만 가능하다는 특징이 있습니다. 한쪽 방향으로만 통신이 가능하기 때문에 반이중 통신이라고 부르기도 합니다. PIPE는 간단하게 사용할 수 있다는 장점이 있습니다.
두번째는, Named PIPE (FIFO) 입니다. PIPE는 통신하는 프로세스가 명확할 경우 사용하는 반면, Named PIPE는 전혀 모르는 사이의 프로세스들의 통신에 사용합니다. 익명 PIPE는 부모가 동일한 프로세스들 사이에서만 통신이 가능하지만 Named PIPE는 부모 프로세스에 상관없이 프로세스들 사이의 통신을 할 수 있다는 점이 특징입니다. 이는 프로세스 통신을 위해 mkfifo함수를 이용해 파일을 생성하기 때문에 가능합니다. 하지만, 익명 PIPE와 동일하게 동시에 읽기/쓰기가 불가능 합니다. 이는 두개의 파일을 읽기전용, 쓰기전용으로 만들어서 해결할 수 있습니다. 전이중 통신을 위해서는 두 개의 fifo 파일을 만들어서 사용해야 합니다.
세번째는, 메세지 큐 입니다. 메세지 큐는 선입선출의 형태로 통신이 이루어지는 점에서 Named PIPE와 동일합니다. 차이점은 Named PIPE가 데이터의 흐름이라면 메세지 큐는 메모리 공간이라는 점입니다. 이는 여러개의 프로세스가 메세지 큐의 데이터에 접근할 수 있음을 의미합니다.
네번째는, 공유메모리 입니다. 앞서 PIPE, Named PIPE, 메세지 큐가 통신을 이용해 데이터를 주고받는다면, 공유메모리는 프로세스간 메모리 영역을 공유해서 사용할 수 있도록 지원합니다. 프로세스가 공유 메모리 할당을 커널에 요청하면 커널은 해당 프로세스에 메모리 공간을 할당해줍니다. 이후 어떤 프로세스건 해당 메모리영역에 접근할 수 있습니다. 공유 메모리는 곧바로 메모리에 접근할 수 있기 때문에 IPC 방식 중 속도가 제일 빠릅니다.
다섯번째는, 메모리 맵 입니다. 메모리 맵은 공유 메모리와 메모리를 공유한다는 점은 동일합니다. 하지만, 현재 열려져 있는 파일을 공유하는 점에서 차이가 있습니다. 열린 파일이 메모리에 올라가있으면 다른 프로세스가 해당 파일을 사용할 때 또다시 파일을 열지않고 공유한 상태로 사용하는 것이 더 효율적입니다.
여섯번째는, 소켓입니다. 소켓은 소켓을 만들어 통신하는 방법입니다. 소켓 통신은 데이터 교환을 위해 양쪽 PC에서 각각 임의의 포트를 정하고 해당 포트 간의 대화를 통해 데이터를 주고받는 방식입니다. 이 때 각각 PC의 프로세스는 임의의 PORT를 맡아 데이터를 송수신 합니다.

Heap과 Stack의 차이점은 무엇인가요?

Heap영역과 Stack영역 각각에 담기는 정보에 차이가 있습니다.

stack영역에는 compile시 선언된 지역변수나 매개변수 등의 정보가 담기고,

heap 영역에는 런타임시 크기가 결정되는 정보들이 담깁니다.

용어의 명칭과 다르게 stack 영역의 경우에는 stack으로 구현되어 있으나,

heap영역은 heap자료구조가 아닌 linked list로 주로 구현되어 있습니다.

힙영역과 스택영역

프로세스에 할당되는 메모리의 각 영역에 대해서 설명해 주세요.

프로세스에 할당되는 메모리 영역은 크게 코드, 데이터, 스택, 힙으로 4가지로 나뉩니다.

코드영역에서는 실행할 명령어가 저장되고, 데이터 영역에서는 전역변수나 정적변수가 저장됩니다.

스택영역에서는 함수 호출에 필요한 스택 프레임을 저장해둡니다.

힙영역에서는 런타임시 사용자가 관리하는 공간으로 메모리가 동적으로 할당되고 해제됩니다.

프로세스 혹은 스레드의 동기화란 무엇인가요?

동기화란 병렬적으로 수행되는 작업들에 대해 자원 접근 순서를 정해

서로가 알고 있는 정보가 일치하도록 하는 것을 의미합니다.

공유하는 자원의 일관성을 유지하기 위해 수행합니다.

컨텍스트 스위칭이란 무엇인가요?

여러 프로세스를 처리해야 하는 상황에서 현재 진행중인 Task(프로세스, 스레드)의 상태를 PCB에 저장하고 다음에 진행할 Task의 상태값을 읽어 적용하는 과정을 말한다.

컨텍스트 스위칭은 멀티태스킹, 인터럽트 핸들링, 사용자 모드와 커널 모드 전환 등으로 인해

필요하게 됩니다.

임계영역 문제에 대한 해결책에는 어떤 것들이 있나요?

임계영역 문제를 해결하기 위해서는 상호배제, 한정대기, 진행의 융통성을 만족해야합니다.

그러한 대표적인 방법으로는 뮤텍스와 세마포어, 모니터가 대표적입니다.

뮤텍스는 자원이 점유하게 되면 lock을 얻고 자원을 모두 사용하게 되먼 unlock을 하는 형식으로 구현합니다. busy waiting이 발생하는 문제점이 있습니다.

세마포어는 두 개의 원자적 함수 p,v로 조작되는 정수 변수를 두고, 공유 자원에 대한 접근을 제한하는 방법으로 사용합니다.

모니터는 모든 프로세스가 세마포어 알고리즘을 따른다고 가정하여 공유 자원을 내부적으로 숨기고, 공유 자원에 대한 인터페이스만 제공하는 방법이다.

- 추가질문
    - 자바의 스레드 동기화 모델은 어떻게 구성되어있나요?

교착상태란 무엇이며, 교착상태가 발생하기 위해서는 어떤 조건이 있어야 하나요?

교착 상태란 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태를 말합니다.

교착 상태(데드락)은 비선점, 환형대기, 점유와대기, 상호배제의 조건이 모두 충족될 경우에 발생합니다.

교착상태의 해결법은 무엇인가요?

  1. 예방(prevention)

    교착 상태 발생 조건 중 하나를 제거하면서 해결한다 (자원 낭비 엄청 심함)

    • 상호배제 부정 : 여러 프로세스가 공유 자원 사용
    • 점유대기 부정 : 프로세스 실행전 모든 자원을 할당
    • 비선점 부정 : 자원 점유 중인 프로세스가 다른 자원을 요구할 때 가진 자원 반납
    • 순환대기 부정 : 자원에 고유번호 할당 후 순서대로 자원 요구
  2. 회피(avoidance) - 교착 상태 발생 시 피해나가는 방법

    은행원 알고리즘(Banker's Algorithm)

    은행에서 모든 고객의 요구가 충족되도록 현금을 할당하는데서 유래함

    프로세스가 자원을 요구할 때, 시스템은 자원을 할당한 후에도 안정 상태로 남아있으면 자원할당, 아니면 할당을 거부하고 다른 프로세스 들이 자원을 해지할때까지 대기하는 방법

  3. 탐지(Detection) & 회복

    은행원 알고리즘과 유사한 방식 vs 자원 할당 그래프를 통해 교착 상태를 탐지함

    자원 요청 시, 탐지 알고리즘을 실행시켜 그에 대한 오버헤드 발생함

    • 타임아웃을 이용한 교착상태의 검출 : 현대 운영체제와 DB에서 사용되는 방법
  4. 회복(Recovery) - 교착 상태 일으킨 프로세스를 종료하거나, 할당된 자원을 해제시켜 회복시키는 방법

    프로세스 종료 방법

    • 교착 상태의 프로세스를 모두 중지
    • 교착 상태가 제거될 때까지 하나씩 프로세스 중지

    자원 선점 방법

    • 교착 상태의 프로세스가 점유하고 있는 자원을 선점해 다른 프로세스에게 할당 (해당 프로세스 일시정지 시킴)
    • 우선 순위가 낮은 프로세스나 수행 횟수 적은 프로세스 위주로 프로세스 자원 선점
  5. 무시

교착상태가 자주 일어나는 상황이 아니기 때문에, 현대 운영체제에서는 대부분 교착상태가 발생할 경우에, 사용자 스스로 처리할 수 있도록 에러를 띄우는 교착상태 무시 방법을 사용합니다.

  • 추가질문
    • 현대 운영체제에서는 교착상태를 어떻게 해결하나요?
    • DB에서 교착상태를 해결하기위한 방법들
    • 식사하는 철학자 문제의 해결방안

경쟁 상태(racing condition)란 무엇인가요?

경쟁상태는 동시성 문제와 관련되어 있습니다.

두 개 이상의 프로세스가 공통 자원을 병행적으로(concurrently) 읽거나 쓰는 동작을 할 때
공용 데이터에 대한 접근이 어떤 순서에 따라 이루어졌는지에 따라 그 실행 결과가 달라지는 상황

뮤텍스와 세마포어에 대해서 설명해 보시오.

세마포어와 뮤텍스는 모두 동기화 문제를 해결하기 위한 방법입니다.

여러 프로세스가 공유자원에 접근할때, 한 프로세스가 임계영역에서 수행중이라면 다른 프로세스는 자신의 크리티컬 섹션에 들어가지 못하게 해야합니다

세마포어에는 P연산과 V연산이 있습니다. P연산은 자원을 할당하는 연산이고 V연산은 자원을 해제하는 연산입니다. 크리티컬 섹션에 들어가기 전 세마포어를 통해 자원에 접근가능한지 확인을 하며 동기화문제를 해결합니다. 공유 자원에 프로세스들이 최대 허용치만큼 접근할 수 있음

뮤텍스는 이진 세마포어의 일종으로 자원에 lock을 걸면서 동기화 문제를 해결합니다. 상호 배제 개념을 이용하며 크리티컬 섹션을 가진 스레드들이 각각 단독으로 실행되게 하는 기술입니다.

락을 걸지 않고 경쟁상태를 해결할 수 있는 방법

  • 하드웨어적으로 atomic 연산을 지원하면 해결
  • 가시성은 Atomic 자료형과 volatile을 이용해 해결가능
  • Lock을 사용할 때는 syncronized 를 통해 해결.
  • 자바 내부적으로는 lock없이 지원을 안해주므로 message queue를 이용해서 해결하는 방안등으로 구현가능하다?

자바에서 해결 https://mygumi.tistory.com/112

https://newbedev.com/java-avoid-race-condition-without-synchronized-lock

사용자 수준의 스레드와 커널 수준의 스레드의 차이는 무엇인가요?

https://helloinyong.tistory.com/293

커널 수준 스레드 : 운영체제 시스템에서 생성 및 관리, 컨텍스트 스위칭이 빈번해서 오버헤드가 크다.

사용자 수준 스레드: 사용자 단에서 생성 및 관리

커널:사용자 = 1:N관계에 있음. 그래서 하나의 스레드 block시 사용자 스레드도 block됨.

스레드 풀링이란?(~ 커넥션풀), 장점?

미리 생성해둔 쓰레드를 재사용하여 생산성 향상

thread pool mysql

CPU 스케줄링이란 무엇인가요?

cpu 스케줄링이란 cpu스케줄러가 어떤 프로세스에 CPU를 배정할지 결정하는 작업을 의미한다.

배정하는 기준으로는 공평성, 효율성등을 고려한다.

CPU 스케줄링 종류와 방법에는 대표적으로 어떤 것들이 있나요?

CPU스케줄링은 보통 선점 스케줄링과, 비선점 스케줄링으로 나누어 설명합니다.

비선점 스케줄링
• FCFS : 큐에 도착한 순서대로 CPU 할당
• SJF : 수행시간이 짧은 것 부터 CPU 할당

선점 스케줄링
• 우선순위 스케줄링 : 우선순위가 높은 순서대로 처리
• Round Robin : 동일한 시간의 time quantum만큼 할당
• Multilevel Queue : 작업을 여러 종류의 큐로 나누어 큐마다 다른 time quantum 할당
• Multilevel-feedback Queue : Multilevel에서 time quantum을 채우면 다음 level로 내려감

동기와 비동기, 블로킹과 넌블로킹의 차이는 무엇인가요?

https://musma.github.io/2019/04/17/blocking-and-synchronous.html

동기/비동기 - 작업 주체 여러개

블로킹/논블로킹 - 작업이 여러개

동기 : 시작과 종료를 동시에 하거나, 하나가 끝나면 다른 하나가 시작하는 경우, 결과를 바로 처리해야함

비동기 : 별도의 시작/종료를 가짐, 결과를 바로 처리 안해도됨.

블로킹 : 작업을 하다가 다른 작업이 완료될때까지 기다렸다가 다시 수행

넌블로킹 : 다른 작업과 관련없이 자기 작업 계속함

https://www.youtube.com/watch?v=oEIoqGd-Sns

메모리 계층 구조의 순서가 어떻게 되는가? CPU에서 가까운 순으로 말해보시오.

레지스터, 캐시, 메인메모리(RAM), 디스크(HDD,SDD) 으로 구성됩니다.

CPU에 가까울 수록 속도가 빠르고 가격도 비쌉니다..

First Fit, Best Fit, Worst Fit에 대해서 설명해 보시오.

메모리 공간 어디에 프로세스를 집어넣을지에 대해 따지는 문제입니다.

First Fit의 경우 최초로 메모리 공간을 만족하는 경우,

Best Fit은 가장 낭비되는 메모리 공간이 적을 경우.

Worst Fit은 가장 메모리가 큰 경우에 프로세스를 해당 메모리 공간에 넣습니다.

메모리 관리에서 페이징와 세그멘테이션에 대해서 설명해 보시오.

메모리를 관리 기법 중 불연속 메모리 관리 기법입니다.

페이징은 외부단편화와 압축 작업을 해결하기 위한 방법으로, 페이지라는 고정 크기로 logical memory를 분리하고,

페이지와 같은 크기의 프레임으로 physical memory를 분리합니다.

페이징을 사용하면 외부 단편화를 해결한다는 장점이 있지만 내부단편화는 여전히 존재합니다.

세그멘테이션은 페이징과는 달리 서로 다른 크기의 논리적 단위인 세그먼트로 메모리를 분리합니다.

세그멘테이션을 사용하면 세그먼트들이 메모리에 할당되고 해제되는 과정에서 외부단편화가 발생합니다.

하지만 세그먼트는 메모리를 의미 단위로 나누기 때문에 보호와 공유에서 효율적입니다.

메모리 관리 기법

  • 연속 메모리 관리 : 고정 분할(내부단편화), 동적 분할(외부단편화)
  • 불연속 메모리 관리 : 페이징, 세그멘테이션

외부 단편화란? 내부 단편화란?

단편화란 프로세스들이 차지하는 메모리 틈 사이에 사용하지 못할 만큼의 작은 자유공간들이 늘어나게 되는데, 이것을 단편화라고 한다.

외부 단편화, 가변 분할 방식(세그먼트)에서 발생하는 메모리 상의 작은 빈공간을 말한다.

프로세스의 바깥쪽에 발생하기 때문에 외부 단편화라고 한다.

내부 단편화, 고정 분할 방식에서 파티션에 프로세스를 배치하고 파티션 내부에 공간이 남는 현상. 파티션의 내부에 발생하기 때문에 내부 단편화라고 부른다.

페이지 교체 알고리즘 종류에는 어떤 것들이 있나요?

페이지 부재 발생 → 새로운 페이지를 할당해야 함 → 현재 할당된 페이지 중 어떤 것 교체할 지 결정하는 방법이다.

FIFO 알고리즘: 제일 먼저 들어간 것 먼저 나오게

LRU 알고리즘 : 최근에 가장 적게 사용된 페이지를 나오게

OPT 알고리즘 : 앞으로 가장 사용하지 않을 페이지 교체

https://doh-an.tistory.com/28

가상 메모리(Virtual Memory)란?

가상 메모리는 물리 메모리의 크기와 관계없이 메모리를 사용할 수 있도록 지원하는 기술이다.

현대 메모리 관리에서는 이러한 가상 메모리를 통해 물리 메모리의 크기와 프로세스가 올라갈 메모리의 위치를 신경쓰지않고 프로그래밍하도록 지원한다.

Demand Paging이란?

요구페이징은 필요한 프로그램만 메모리에 적재하는 방법으로 가상 메모리 시스템에서 많이 사용된다.

요구 페이징을 사용하는 가상메모리에서는 페이지들이 실행 과정에서 실제로 필요해질 때 적재 된다

가상 메모리를 사용할 시 장단점은?

장점: 물리적 메모리에 제약을 받지 않는다. 병행성 및 cpu 이용률이 올라간다

단점: 전반적인 속도 저하가 있다.

Cache Memory의 역할은 무엇인가

캐시 메모리는 CPU와 메모리 사이의 속도 차이를 완화하기 위한 역할을 합니다.

캐시는 메모리의 데이터를 미리 가져와 저장해두는 임시 장소로 앞으로 사용될 것으로 예상되는 데이터를 미리 저장해 놓습니다.

Locality와 Cache Hit Ratio에 대해 설명하시오

캐시 적중률은 CPU가 사용할 데이터를 캐시에서 탐색 했을 때, 원하는 데이터가 캐시에 존재할 확률을 의미합니다.

캐시 적중률을 높이기 위해서는 캐시 메모리의 크기를 늘리는 방법과 앞으로 많이 사용될 데이터를 캐시에 저장하는 방법이 있습니다.

앞으로 많이 사용될 데이터를 저장하기 위해서는 지역성을 이용할 수 있습니다. 지역성은 현재 사용하고 있는 메모리 위치에서 가까운 데이터를 사용할 확률이 높다는 개념입니다. 따라서, 현재 접근하고 있는 메모리 근처의 값들을 캐시에 저장해놓는다면 캐시 적중률을 높일 수 있습니다.

이런 캐시 지역성 개념은 정렬 알고리즘의 최적화에도 응용되는 개념입니다.

Heap과 Stack의 장단점 비교 (속도, 크기 등)

스택 : 빠르다, 스택 크기 제한

 : 메모리 크기 제한 없음, 메모리를 직접 관리해야함, 상대적으로 느림

스택이 힙에 비해서 빠른이유는 스택은 이미 생성 되어있고,

힙에 비해 스택은 단순한 연산(cpu instruction)만을 처리하기 때문입니다.

https://goodgid.github.io/Memory-Structure/

Starvation이란?

프로세스가 끊임없이 필요한 컴퓨터 자원을 가져오지 못하는 상황

단순한 스케줄링 알고리즘으로 인해 발생, aging 등의 우선순위를 변경해주는 기법을 통해 해결.

Aging이란?

기아 현상 해결을 위해 waiting time에 따라 우선순위를 상승 시켜주는 기법이다.

멀티 프로세스와 멀티 스레드 각각의 장단점

멀티 스레드는 멀티 프로세스보다 메모리 공간을 공유해서 사용하기 때문에 적은 메모리 공간을 차지하고 Context Switching이 빠르다는 장점이 있지만, 오류로 인해 하나의 스레드가 종료되면 전체 스레드가 종료될 수 있다는 점과 동기화 문제를 가지고 있다.

반면, 멀티 프로세싱 방식은 하나의 프로세스가 죽더라도 다른 프로세스에는 영향을 끼치지 않고 정상적으로 수행된다는 장점이 있지만, 멀티 스레드보다 많은 메모리 공간과 CPU 시간을 차지한다는 단점이 존재한다.

멀티 스레드: 카카오톡

멀티 프로세스: 크롬탭

프로세스 제어블록에는 어떤 정보가 담겨있나요?

프로세스 제어블록에는 프로세스를 실행하는데 중요한 정보들이 담겨있습니다.

대표적으로 포인터, PID, 프로세스 카운터, 프로세스 상태, 레지스터 정보, 메모리 관리 정보, 부모자식프로세스의 PID가 담겨있습니다.

교착상태와 starvation의 차이는 뭔가요

교착 상태는 여러 프로세스가 동일한 자원 점유를 원할 때 발생하고

기아 상태는 여러 프로세스가 자원을 점유하기 위해 경쟁 할 때 특정 프로세스는 영원히 자원 할당을 받지 못하는 것

child process, orphan process, zombie process에 대해 설명해 보시오.

자식 프로세스 : fork로 자식프로세스를 만든 상태. 부모의 데이터,힙,스택, PCB 복사

좀비 프로세스 : 프로세스가 종료됐는데 메모리상에 정보가 남아있는 상태, 부모가 wait로 보고받지 못함

고아 프로세스 : 부모 프로세스가 먼저 종료돼서 부모 프로세스를 잃은 프로세스, init이 자식프로세스 회수함

인터럽트란 무엇인가요?

인터럽트란 프로세스 실행 중에 예외상황이 발생하여 처리가 필요한 경우 CPU에게 알려 처리할 수 있도록 하는 것

인터첩트처리루틴을 통해서 인터럽트를 처리한다.

인터럽트는 하드웨어 인터럽트와 소프트웨어 인터럽트로 구성되어 있습니다.

하드웨어 인터럽트는 하드웨어 기기가 인터럽트를 요청하는 것이고 소프트웨어 인터럽트는 예외처리, 시스템 콜이 발생하는 상황에서 실행됩니다.

시스템 콜이란 무엇인가요?

시스템 콜은 사용자나 응용 프로그램이 커널에서 제공하는 기능을 사용하기 위한 인터페이스 입니다.

운영체제는 커널이 제공하는 서비스를 시스템콜을 이용해 제한함으로써 컴퓨터 자원을 보호합니다.

예시로는 프로세스 생성/종료나 I/O작업 등이 있습니다. (fork, exec, exit, wait)

thread-safe의 의미?

멀티 스레드 프로그래밍에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없음을 뜻한다

캐시 사상 방식

참고

운영체제 다른 질문 & 답변 : https://hyonee.tistory.com/95?category=913823

크로미움 멀티 프로세스 구조 : https://d2.naver.com/helloworld/2922312

자바의 스레드 동기화 : https://kiwi99.tistory.com/19, https://ict-nroo.tistory.com/41

자바 stack, heap 메모리 이해하기: https://yaboong.github.io/java/2018/05/26/java-memory-management/

0개의 댓글