컴퓨터과학
-
7. Deadlocks (2) - 2 (Deadlock Avoidance~Banker's Algorithm)컴퓨터과학/운영체제 2024. 6. 20. 14:38
Deadlock Avoidance는 4가지 상황(Mutual Exclusion, No Preemption, Hold and Wait, Circular Wait) 중 한 가지는 무조건 막는 Deadlock Prevention과는 달리, 이들을 전부 허용하되, 동작 과정에서 Deadlock이 발생하지 않도록 제어한다.자원을 할당할지, 말지에 대한 결정은 OS가 한다.Deadlock이 발생할 가능성이 있는 상황이면, 자원을 줄 수 있는 상황임에도 주지 않는 선택을 한다. (위험한 길을 회피해서 안전한 길로 가기)미래에 일어날 Deadlock의 가능성을 과거에 미리 예측하려면, 추가적인 사전정보를 가지고 있어야 한다.제일 간단하고 유용한 방법은, 각 프로세스가 자원마다 최대 몇 개를 사용할 지에 대한 정보를 미..
-
7. Deadlocks (2) - 1 (~Deadlock Prevention)컴퓨터과학/운영체제 2024. 6. 20. 01:05
진행을 못하고 있는(blocked) 프로세스들 각각이, 다른 프로세스가 진행할 때 꼭 필요한 자원들을 움켜쥐고 있으면서 안 놓고, 다른 프로세스가 움켜쥐고 있는 자원을 기다리는 상황이다. 결국 모두가 다같이 옴짝달싹 못하게 된다예시시스템이 2개의 테이프 드라이브를 가지고 있다.(자원)P1과 P2 각각이 하나의 테이프 드라이브를 움켜쥐고 있고, 각각 서로의 테이프 드라이브가 필요한 경우.예시1로 초기화 된 세마포어(동기화 메커니즘) A, B -> P(A)가 호출되면 0이 됨. 다른 프로세스에서 P(A)를 마딱뜨렸는데 0이면 1이 될 때까지 대기해야함.다음 4가지 조건이 동시에 만족해야 Deadlock이 발생할 가능성이 있음(필요조건).Mutual exclusion: 한번에 하나의 프로세스만 해당 자원을 사..
-
[컴퓨터네트워크] 프로토콜(Protocol)이란?컴퓨터과학/컴퓨터네트워크 2022. 10. 30. 23:19
Protocols define the format, order of messages sent and received among network entities, and actions taken on msg transmission, receipt 네트워크에서 프로토콜(Protocol)이란, 장치들 간에 통신을 하기 위해 그 절차나 관례를 미리 정해 놓은 것이라고 생각하면 편하다. 장치들 간에 주고받는 데이터는 어떤 형식을 갖추어야 하고, 어떤 순서로 전달되어야 하는지 등이 약속되어 있다. 이해를 돕기 위해 아래의 예시를 보자. 우리가 길을 걷다가, 마음에 드는 사람을 발견해서 전화번호(원하는 정보)를 얻고자 하는 상황을 생각해보자. 그 사람이 한국인이라면 한국말로, 미국인이면 영어로 물어봐야 할 것이다.(데..
-
[C] Integer Promotion(암시적 형변환) - "char to unsigned int"컴퓨터과학/시스템프로그래밍 2022. 10. 19. 01:10
In C, integers of smaller types(char, short) are automatically promoted to integers before evaluated. C언어에서는 int(4byte)보다 작은 정수형 자료형들(char, short)이 사용(evaluated)되기 전에, 미리 int형(4byte)크기만큼 늘어난다. 늘어나는 과정에서는 sign extension이 발생한다. 여기서 사용(evaluate)이란, printf와 같은 출력 명령이나 ==와 같은 비교연산 등에 해당 자료형들이 이용되는 경우를 말한다. 위의 코드에서 변수 c는 char형으로 1byte(8bit)의 크기를 갖는다. 위의 0xff는 16진수로, 2진수로 바꾸면 1111 1111이 된다. i = (unsign..
-
[Assembly] movslq 명령어(movslq instruction)컴퓨터과학/시스템프로그래밍 2022. 10. 18. 16:49
movslq src, dest src의 32비트(4바이트)의 데이터를 sign-extension하여 64비트(8바이트)로 만든 뒤, dest로 이동(mov)시킨다. 1바이트를 2바이트로 sign extension하는 예시: 1000 0000 -> 1111 1111 1000 0000 (MSB(제일 왼쪽 비트) 1로 sign-extension) 0000 0000 -> 0000 0000 0000 0000 (MSB(제일 왼쪽 비트) 0으로 sign-extension)