OS
-
[운영체제] 스핀락(Spinlock)은 무엇인가?ComputerScience/운영체제 2020. 6. 14. 00:42
2020/06/14 - [운영체제] - [운영체제] 뮤텍스(Mutex), 세마포어(Semaphore) 그리고 모니터(Monitor) 뮤텍스와 비교되는 스핀락 빙글빙글 돈다는 의미에서 스핀락이다. 스핀락 특정한 자료구조를 lock 또는 unlock 함으로써 공유 데이터에 대한 접근 권한을 관리하는 방법이다. 권한을 획득하기 전까지는 CPU는 무의미한 코드를 수행하는 busy waiting 상태로 대기하고 있다가 접근 권한을 얻는다면 내부 코드를 수행하고 종료 후 권한을 해제한다. 상태가 획득/해제 밖에 없기 때문에 공유 영역에는 하나의 컴퍼넌트만 접근할 수 있으며 획득과 해제의 주체는 동일해야 한다. 즉, Lock를 얻을 수 없다면 계속해서 for문을 돌면서 Lock을 얻을 수 있는 지 확인한다. Lock..
-
[운영체제] 뮤텍스(Mutex), 세마포어(Semaphore) 그리고 모니터(Monitor)ComputerScience/운영체제 2020. 6. 14. 00:10
이 셋은 모두 운영체제의 동기화 기법이다. 일단 뮤텍스와 세마포어부터 살펴보자. 운영체제에선 공유된 자원에 대해 여러 프로세스, 쓰레드가 접근하여 문제가 발생하는 것을 방지하고자 운영체제 동기화 기법을 만들었다. 1. 뮤텍스(Mutex, 상호배제) aka Mutual exclusion 공유된 자원의 데이터를 여러 쓰레드가 접근하는 것을 막는 것이다. 임계영역(Critical Section)을 가진 스레드들의 Running time이 서로 겹치지 않게 단독적으로 실행되게 하는 것. 다중 프로세스들의 공유 리소스에 대한 접근을 조율하기 위해 Locking과 Unlocking을 사용. 한 쓰레드가 임계영역에 들어가기 위해선 lock을 하고 나올 땐, unlock를 해준다. bool unlocked; void ..
-
[운영체제/OS] 프로세스/문맥교환/스케줄링ComputerScience/운영체제 2020. 6. 3. 10:21
프로세스(Process)와 쓰레드(Thread)의 차이를 알아보자. 프로세스 (Process) Process : 프로세스라는 것은 하나의 작동하고 있는 프로그램, 프로세스의 상태로는 CPU의 수행상태, 프로세스 주소공간, 프로세스 관련 커널 자료구조가 있다. CPU의 수행상태 : CPU의 수행 상태를 나타내는 하드웨어 문맥으로 PC(Program Counter : 다음에 실행 될 Code의 위치)와 각종 레지스터가 존재한다. 프로세스 주소 공간 : 프로세스는 Code, Stack, Data값을 각각 갖고 있다. 커널상의 Context : 프로그램이 수행돼 프로세스가 되면 OS는 이를 관리하기 위한 자료구조를 유지한다. PCB(Process Control Block) : 프로세스 정보를 저장해놓은 블록을 ..