CS/OS11 교착상태 교착상태 교착상태란 두 개 이상의 프로세스들이 서로가 가진 자원을 기다리며 중단된 상태를 의미합니다. 여러 프로세스들이 함께 접근할 수 있으면서 사용하는 자원들을 공유자원이라고 합니다. 자원들을 공유해서 사용하는 것은 물론 효율적이지만 공유하기 때문에 발생하는 문제점도 있습니다. 예를 들어 사용자 A와 B가 있다고 할 때 A는 100만원이 있는 계좌에 50만원을 입금하고 B는 50만원을 출금하는 상황이 동시에 일어났다고 가정하겠습니다. A의 행동은 현재값+50의 결과를 낳고 B는 현재값-50의 결과를 낳습니다. 정상적인 과정은 A로인해 현재값이 150이되어 B의 과정을 거치고 다시 100이되는 것입니다. 혹은 그 반대도 성립하겠죠? 하지만 이 과정이 동시에 일어났기 때문에 현재값은 바뀌지않고 100이됩니.. 2023. 3. 8. 멀티프로세싱, 멀티스레딩 멀티프로세싱, 멀티스레딩 이번 포스팅에선 멀티프로세싱, 멀티스레딩을 설명해 보겠습니다. 멀티프로세싱 우리가 알고 있는 일반적인 개념은 하나의 프로그램이 실행되면 하나의 프로세스가 된다는 것입니다. 멀티프로세싱이란 하나의 응용프로그램을 여러 개의 프로세스로 구성하여 마찬가지로 여러 개의 프로세서가 하나의 작업을 처리하는 것입니다. 프로세서란 CPU를 의미하며 현재 우리가 사용하는 PC는 대부분 멀티코어로 여러 개의 프로세스를 가지고 있습니다. 멀티프로세싱에서 중요한 점은 하나의 프로그램이 여러개의 프로세스로 나누어진다는 것입니다. 나누어졌기 때문에 하나 이상의 일을 병렬로 처리할 수 있으며 프로세스 중 일부에 문제가 발생해도 다른 프로세스에 영향이 없어 신뢰성이 높은 강점이 있습니다. 하지만 각 프로세스들.. 2023. 3. 7. 컨텍스트 스위칭 컨텍스트 스위칭 우리가 컴퓨터를 쓸 때 하나의 프로그램만 실행하지 않습니다. 인터넷, 게임 등 여러개를 실행시킬 수 있죠? 프로그램들은 동시에 실행되는 것이 아니라 엄청나게 빠른 속도로 프로그램을 교체하며 실행시키는 것인데요. 예를 들어 A, B, C란 프로그램들을 실행시키자고 할 때 CPU는 하나의 코어를 기준으로 A -> B -> C -> A -> B -> A -> C 처럼 매우 빠르게 프로그램을 교체하는 것입니다. 이러한 방법을 '컨텍스트 스위칭'이라고합니다. PCB 컨텍스트 스위칭은 PCB를 통해 이루어 집니다. PCB란 운영체제에서 프로세스에 대한 메타데이터를 저장한 데이터인데요 메타데이터란 데이터를 설명하는 작은 데이터 입니다. 컨텍스트 스위칭은 프로그램들, 즉 프로세스들을 계속해서 교체하는 .. 2023. 3. 3. 프로세스의 메모리 구조 프로세스의 메모리 구조 프로세스는 메모리에 올라가 실행되고 있는 프로그램을 의미합니다. 여기서 프로세스의 코드들은 코드의 상태와 종류에 따라 프로세스에 각기 다른 메모리 영역에 들어가게 됩니다. 이번 포스팅에서는 이러한 프로세스의 메모리 구조에대해 설명 해보겠습니다. 스택 함수가 호출되고 사용되는 지역변수와 매개변수가 저장되는 영역입니다. 컴파일 시 크기가 정해집니다. 컴파일 시간에 크기가 정해지는 스택 영역 특성상 크기를 늘릴 수 없기 때문에 재귀함수의 경우, 스택 영역을 초과하는 메모리가 필요할 경우 stack overflow가 발생합니다. 힙 사용자에 의해 메모리 공간이 동적으로 할당되고 해제되는 영역입니다. 런타임 시 크기가 정해집니다. 데이터 전역변수, 정적변수가 저장되고 프로그램이 종료될 때 .. 2023. 2. 25. 이전 1 2 3 다음