본문 바로가기

OS(운영체제)

(7)
[운영체제] 프로세스 - 사용자 수준의 스레드와 커널 수준의 스레드의 차이? 커널 레벨 쓰레드란 커널 수준에서 생성되고 동작하는 쓰레드로 커널이 직접 관리한다. 프로그래머 요청에따라 쓰레드를 생성하고 스케줄링 하는 주체가 커널이면 커널 쓰레드라고 한다. 커널 레벨 쓰레드 특징 커널이 각 쓰레드를 개별적으로 관리 하기 때문에 I/O 인터럽트에 의해 하나의 쓰레드가 Block 됐을때 다른 쓰레드로 작업이 가능하다. 안정적이고 다양한 기능을 제공한다. 사용자 모드와 커널 모드의 전환이 빈번해서 성능저하가 발생한다. 스케줄링과 동기화를 위해 커널을 호출하는데 오래걸린다. 사용자 레벨 쓰레드란 쓰레드를 관리하는 라이브러리로 인해 사용자 수준에서 생성 및 관리되는 쓰레드이다. 즉, 커널에 의존적이지 않은 형태로 쓰레드의 기능을 제공하는 라이브러리를 활용한 쓰레드를 말한다. 사용자 레벨 쓰레..
[운영체제] 프로세스 - 프로세스 혹은 스레드 동기화란? 1. 프로세스/스레드 동기화 동기화란 어느 공유자원에 대해 프로세스/스레드가 동시에 그 자원에 접근해서 작업하는것을 제어하는것을 말한다. 즉, 데이터의 일관성을 위해 프로세스/스레드 동기화가 필요하다. 동기화가 필요한 이유에 대해 아래에서 알아보자. 2. 동기화가 필요한 이유(경쟁 상태) 경쟁 상태는 상호배제를 하지 않았을때 일어나는 현상을 말한다. 동기화에서 "자원에 접근해서 작업 하는것을 제어하는것" 은 "프로세스/스레드의 상호배제를 고려한다." 고 볼수 있다. 이말은 프로세스/스레드 동기화가 없으면 경쟁 상태가 일어나게 되고 접근 순서에 따라 데이터의 결과 값이 달라지기 때문에 결국엔 데이터의 일관성이 깨지게 된다. 그렇다면 경쟁상태가 일어나지 않게 하기 위해선 어떻게 해야할까? (참고 - 경쟁상태..
[운영체제] 프로세스 - 경쟁 상태란? 경쟁 상태란 경쟁 상태는 상호배제를 하지 않았을때 나타나는 현상으로 여러 프로세스들이 동시에 공유 데이터(임계 영역)로 접근시 공유 데이터를 실행하는 순서에 따라 결과값이 달라질 수도 있는 상황을 말한다. 즉, 데이터의 일관성을 해치게 되고 사용자 의도와 다른 결과값을 받을 수도 있다. 상황을 통해 예를들면 다음과 같다. 상황 친구와 같이 카페를 갔는데 친구놈이 깜빡하고 지갑을 안갖고왔다. 그리고 일단 나는 카드에 만원이 있어서 내 카드로 결제하고 친구놈은 나한테 계좌이체로 돈을 보내주기로 했다. 대화 나 : 커피하나에 3천원인데 너꺼까지 계산해서 6천원 썼다~~ 3천원 보내라ㅎㅎ 친구 : ㅇㅋㅇㅋ 아까 입금함. (정상적인 결과) 위 상황을 살펴봤을때 정상적으로 입출금이 이뤄졌다면 내 카드에 7000원이..
[운영체제] 프로세스 - 컨텍스트 스위칭이란? Context Switching이란? CPU가 어떤 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선순위의 프로세스를 실행해야 할때 현재까지 실행하고 있던 프로세스의 작업 정보를 PCB에 저장하고 CPU가 다음 우선순위의 프로세스를 실행 할수 있도록 프로세스를 교체하는 작업을 의미한다. 즉, 프로세스들을 우선순위에 의해 대기상태, 실행상태를 계속 바꿔주는 작업이다. Context란? CPU가 해당 프로세스를 실행하기 위한 프로세스에 대한 정보들이다. 즉, Context Switching시 PCB에 저장되는 정보들이 Context라고 할 수 있다. PCB 저장 정보 포인터 : 프로세스의 현재 위치를 저장하는 포인터 정보 프로세스 상태 : 각 프로세스의 상태(생성, 준비, 실행, 대기 , 종..
[운영체제] 프로세스 - 뮤텍스와 세마포어 차이 뮤텍스와 세마포어 어떤 작업을 완료하기 위해 여러 프로세스, 쓰레드가 동시에 실행되는 경우가 있다. 이때 중요한건 '공유자원 관리' 이다. 공유자원의 관리가 제대로 되지 않으면 프로그램상 데드락 같은 문제가 발생될 여지가 다분하다. 뮤텍스와 세마포어는 이러한 문제 발생을 막기위한 일종의 '상호배제' 기법 중 하나라고 볼 수 있다. 특히 쓰레드의 경우 Critical Section이란 것이 존재하는데 이것도 마찬가지로 쓰레드A가 Critical Section을 선점하고 있다면 뒤에있는 쓰레드B는 쓰레드A의 작업이 종료될때 까지 기다려한다. Critical Section : 프로그램상 동시에 실행될 경우 문제가 발생할수 있는 영역. 뮤텍스 동작 원리 공유자원 : A 프로세스or쓰레드: X, Y, Z, K, ..
[운영체제] 프로세스 - 교착상태와 해결방안 교착상태란 교착상태는 실행 중인 두 개 이상의 프로세스가 있을 때 서로가 필요한 자원을 점유해놓고 줄 때까지 작업을 멈추고 무한 대기하는 현상을 말한다. 쉽게 말해서 A와 B라는 친구가 있을때 A는 해외 음식을 만들기 위해서 물과 설탕이라는 자원이 필요한데 물만 갖고 있기 때문에 설탕을 얻어야 하는 상황이다. 그리고 B도 마찬가지로 국내음식을 만드는데 물과 설탕이 필요하고 B는 설탕만 갖고 있기 때문에 물을 얻어야 하는 상황이다. 이때, A와 B가 서로 물과 설탕을 점유하고 있는 상태에서 상대방이 먼저 남은 자원을 줄 때까지 음식을 만들지 않고 기다리고 있다고 생각하면 된다. 교착상태가 발생하기 위한 조건 교착상태는 아래 4가지 조건을 만족해야 발생 가능성이 있고, 하나라도 만족하지 않는다면 발생하지 않..
[운영체제] 프로세스 - 프로세스와 스레드의 차이점은? 프로세스란 프로세스란 위에서 말했듯이 프로그램을 메모리에 적재시켜 실행 중인 것을 말한다. 이때 실행단위는 스레드가 된다. 여기서 프로그램과 프로세스의 차이를 알고 넘어가야 한다. 프로그램은 컴퓨터 하드디스크에 저장돼있는 코드덩어리를 말한다. 즉 정적인 상태라고 볼 수 있다. 그런 프로그램을 메모리에 적재시키게 되면 정적인 코드덩어리가 메모리상에서 실행되고 동적인 상태가 되면 프로세스가 되는 것이다. 프로세스의 특징 프로세스는 운영체제의 의해 각자 독립된 메모리 영역과 주소공간을 할당 받는다. 이때 프로세스의 메모리 구조는 크게 Code, Heap, Stack, Data 영역으로 구성되며 저마다의 역할이 있다. Code : 코드를 구성하는 메모리 영역으로 프로그램 명령을 저장. Heap : 동적으로 메모..