본문 바로가기

CS 기초/Operating System7

Sleep() 함수는 정확히 입력 시간만큼의 Sleep을 보장하진 못한다. C의 Sleep() 함수는 입력으로 받은 시간만큼 호출 스레드를 멈추게 한다. Sleep() 함수는 호출 스레드를 Running 상태에서 Suspend 상태로 만든다. 이 상태에선 cpu에 의해 스케줄링 될 수 없다. 입력 시간이 지나면 해당 스레드는 다시 cpu에 의해 스케줄링 되어 실행될 수 있는 상태(ready to run)상태가 된다. 스케줄링은 OS 상태, 스케줄링 우선순위에 따라 바로 될 수도 그렇지 않을 수도 있다. 간단하게 요약하면 Sleep 함수는 호출 스레드를 입력 시간동안 멈췄다가 곧바로 실행을 보장해주는 함수가 아닌, 말 그대로 입력 시간 동안 실행될 수 없는 상태로 만들고, 그 이후에 다시 실행될 수 있는 상태로 만들어 주는 함수이다. https://www.youtube.com/w.. 2023. 2. 4.
Lock 기반 알고리즘의 문제점 lock-free란 키워드가 궁금해서 찾아보던 도중 알아두어야 할 내용인 것 같아 메모 공유 자원이 여러 스레드에 의해 점유되는 현상을 막기 위해 mutex나 semaphore를 이용하여 lock을 걸어 사용할 수 있다. 고성능이 요구되지 않는 환경에선 좋은 방법일 수 있지만, 고성능이 필요한 환경에선 좋은 방법이 아닐 수 있다. 어떤 스레드가 lock을 얻으면 다른 스레드들은 lock을 가진 스레드가 unlock을 할 때까지 해당 자원에 접근하지 못한다. unlock 이후 lock을 얻더라도 스케줄러에 의해 CPU를 할당받지 못하면 lock을 소유한 채로 기다려야 한다. 심지어 스케줄링 우선 순위가 밀리게 되면 해야하는 동작을 하지 않고 있음에도 lock을 소유하고 있고, 다른 스레드 들은 계속해서 대.. 2021. 9. 29.
[OS] 운영체제 연습 문제 풀이 (2) 책 이름: 개념 이해를 위한 운영체제 (21세기사) [프로세스의 정의를 "실행 중인 프로그램" 으로 함이 왜 충분하지 못한가? 그 부족함을 보완할 수 있는 더 좋은 정의를 제시하라] 오직 하나의 프로세스만을 실행하는 시스템 환경에선 해당 정의로 충분하다. 하지만 대부분의 시스템은 여러 프로세스를 번갈아 가며 실행하는 다중 프로그래밍 환경이다. 이를 위해선 실행할 프로그램이 프로세스 형태로 메모리에 존재해야 한다. 즉 메모리에 여러 개의 프로세스가 존재할 수 있다. 하지만 한 시점에서 실행되는 프로세스는 하나이다. 따라서 실행 중인 프로그램이란 의미는 부족할 수 있다. 프로세스란 "프로그램이 메모리 상에 실행 가능한 형태로 적재되어 있는 것" 이라고 정의하는 것이 더욱 디테일하다. [프로세스와 프로그램과의.. 2020. 11. 7.
[OS] 스레드(Thread)와 스케줄링(Scheduling) 개인적으로 학습하는 내용이라 틀린 내용이 있을 수 있습니다. 참고 도서: 개념 이해를 위한 운영체제 [스레드란?] 스레드란 프로세스보다 조금 더 구체적인 개념으로, 하나의 프로세스 내에서 실행되는 하나 또는 여러개의 작업 단위라고 볼 수 있다. 스레드는 프로세스와 유사한 속성을 가지고 있으며 다음과 같이 정의될 수 있다. CPU 제어의 흐름 실행 단위 한 프로세스 내부에서 스케줄링이 가능한 개체 보통 하나의 프로세스 내에 기본적으로 하나의 스레드가 존재하며, 프로세스가 실행된다 함은 프로세스 내부의 스레드의 흐름을 의미한다. 이처럼 하나의 프로세스에 하나의 스레드만 허용하는 환경을 싱글 스레드 환경이라 하며, 싱글 스레드 환경에선 프로세스와 스레드를 크게 구분 짓지 않아도 된다. 하지만 요즘 대부분은 하.. 2020. 6. 7.
[OS] 프로세스(Process)에 관하여 알아보자 개인적으로 학습하는 내용이라 틀린 내용이 있을 수 있습니다. 참고 도서: 개념 이해를 위한 운영체제 [프로세스란?] 프로세스란 보통 실행 중인 프로그램으로 잘 알려져 있다. 하지만 경우에 따라 이 설명은 한계가 있을 수 있다. 운영체제에서 프로세스는 다음과 같이 다양한 개념으로 정의될 수 있다. 실행 중인 프로그램 CPU를 할당하는 대상 시스템 내부에서의 작업 단위 PCB에 존재하는 개체 위의 정의들을 이해하기 위해 프로세스의 다양한 속성들을 알아보자. [프로세스 상태] 프로세스는 우선 실행 중인 프로그램일 수도 있지만, 그렇지 않을 수도 있다. 프로세스는 기본적으로 프로그램이 메모리에 적재되어 있는 상태는 맞다. 이때부터, 프로그램은 프로세스로 분류되어 다음과 같이 세 가지 상태를 가질 수 있게 된다... 2020. 5. 31.
[OS] 운영체제 연습 문제 풀이 (1) 책 이름: 개념 이해를 위한 운영체제 (21세기사) [운영체제란 무엇인지 정의하라] 운영체제란 사용자에게 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공해주고, 시스템의 한정된 자원을 효율적으로 관리함으로써 보다 시스템을 경제적으로 이용할 수 있도록 해주는 소프트웨어이다. [컴퓨터 시스템의 동작원리를 중심으로 운영체제의 필요성을 설명하라] 컴퓨터 시스템은 메모리에 적재된 명령어 중 PC(Program Counter) 레지스터가 가리키는 명령어를 CPU가 실행함으로써 컴퓨터를 동작시킨다. 이를 위해선 보조 기억 장치에 저장되어 있는 응용 프로그램 파일을 찾아 메모리에 적재하고 PC 레지스터가 가리키는 값을 조작하는 등의 작업이 필요하다. 이러한 작업들을 운영 체제의 커널에서 대신해주며, 우리는 운영체.. 2020. 5. 25.