목록운영체제 (3)
쟈미로그
동기화 과정에서 공유 자원에 접근하는 임계 영역에 대한 관리를 어떻게 해주어야 문제들이 발생하지 않을까? 뮤텍스와 세마포어를 사용하면 공유 자원에 대한 여러 스레드/프로세스의 동시 접근을 막을 수 있다. 1. 뮤텍스 (Mutex) 뮤텍스는 공유 자원에 접근 스레드들의 실행 시간이 서로 겹치지 않게 단독으로 실행되게 하는 방법이다. 말 그대로 상호 배제(Mutual Exclusion)의 약자다. 임계 구역에 들어갈 때 lock을 걸고 나갈 때 unlock해서 접근을 조율한다. 2. 세마포어 (Semaphore) 세마포어는 다수의 프로세스/스레드의 n개의 공유 자원에 대한 접근을 제한하는 방법이다. 뮤텍스와의 다르게 여러 스레드가 동시에 한 공유 자원에 접근할 수 있다! 접근 가능한 스레드 개수를 지정해서 ..
1. 프로세스와 스레드 프로세스 프로그램이 자원을 할당받고 메모리에 올라가서 실행되고 있는 상태. code, data, heap, stack 영역을 갖는다. 프로세스마다 각자의 공간을 갖는다. = 서로 다른 프로세스 간에 메모리 접근은 허용 불가능하다! (만약 프로세스간 통신을 원한다면 IPC를 이용해야한다.) 따로 동기화 작업이 필요없다. 컨텍스트 스위칭 비용이 크다. 스레드 프로세스 내의 실행 단위. 하나의 프로세스는 반드시 1개 이상의 스레드(메인 스레드)를 갖는다. stack만 따로 할당받고, 나머지 code/data/heap 영역은 공유한다. 동기화 작업이 필요하다. 컨텍스트 스위칭 비용이 적다. 스레드마다 PC 레지스터를 갖는다. (스레드도 결국 컨텍스트 스위칭 되므로) 스레드마다 stack을..
1. 운영체제 (OS) 운영체제는 HW와 응용프로그램 사이에서 인터페이스 역할을 하는 시스템 소프트웨어다. HW를 관리하고, 컴퓨터 시스템의 자원들을 효율적으로 관리하고, 사용자가 컴퓨터를 효과적으로 사용할 수 있도록 환경을 제공해준다. 2. 커널 커널은 메모리에 상주하는 운영체제의 핵심 부분이다. 어떤 응용프로그램이 컴퓨터 시스템에서 수행되려면 메모리에 올라가 있어야 한다. 마찬가지로 운영체제도 소프트웨어로서, 컴퓨터 전원이 켜짐과 동시에 메모리에 올라가야한다. 하지만 운영체제처럼 규모가 큰 프로그램이 모두 메모리에 올라간다면 메모리 낭비가 심해진다. 따라서 운영체제 중 항상 필요한 부분만 메모리에 올리게 되는데 그것이 커널이다! 카널은 운영체제의 핵심 역할인 컴퓨터 자원 관리 역할을 하지만, 사용자와..