본문 바로가기

CS/OS6

경쟁상황 (Race Condition), 뮤텍스, 세마포어 경쟁 상황(Race Condition)이란? 동시에 여러 개의 프로세스가 동일한 자료를 접근하여 조작하고, 그 실행 결과가 접근이 발생한 특정 순서에 의존하는 상황을 경쟁 상황(race condition)이라고 합니다. 경쟁 상황 예시 여러개의 프로세스가 어떤 자원을 공유하게 된다면 데이터의 무결성에 문제가 생길 수 있습니다. static int count; func thread_1() { for (int i = 0; i < 10000000; i++) { count++; } } func thread_2() { for (int i = 0; i < 10000000; i++) { count--; } } 위의 코드처럼 서로 다른 쓰레드가 count라는 하나의 변수에 접근한다고 가정해봅시다. 위의 코드의 값은 같.. 2022. 9. 11.
CPU 스케줄링 프로세스 스케줄러 멀티 프로그래밍의 목적은 CPU 이용을 최대화하기 위해 항상 어떤 프로세스가 실행되고 있는 상태를 유지하는 것이 목표입니다. 목적을 달성하기 위해 사용자가 어떤 프로그램과 상호작용하고 있다면 다른 프로세스와 교체하여 항상 CPU 코어에 프로세스가 실행되고 있어야 합니다. 프로세스 스케줄러는 목표를 달성하기 위해 코어에 실행가능한 여러 프로세스 중에서 하나의 프로세스를 선택해야 합니다. 하나의 CPU 코어는 한 번에 하나의 프로세스를 실행할 수 있으며 2개 이상의 프로세스가 동시에 실행되기 위해서는 여러개의 코어가 필요합니다. 동시에 실행되는 프로세스가 코어의 개수를 넘어갈 수는 없습니다. 스케줄링 큐 프로세스가 메모리에 올라오면 준비 큐에 들어가서 준비 상태가 되어 Ready Queue.. 2022. 9. 7.
IPC 독립적인 프로세스와 협력적인 프로세스 운영체제 내에서 실행되는 프로세스들은 독립적이거나 또는 서로 협력하는 프로세스들일 수 있습니다. 독립적인 프로세스 : 프로세스가 시스템에서 실행 중인 다른 프로세스들과 데이터를 공유하지 않는 프로세스 협력적인 프로세스 : 프로세스가 시스템에서 실행 중인 다른 프로세스들에 영향을 주거나 받는 프로세스 프로세스간 협력을 허용하는 이유 정보 공유 : 여러 응용 프로그램이 동일한 정보에 접근해야할 필요가 있으므로(예를들어, 복사와 붙여넣기) 그러한 정보를 접근할 수 있는 환경을 제공해야 합니다. 계산 가속화 : 특정 작업을 빨리 실행하고 싶으면 작업을 나누어서 각각 병렬로 실행될 수 있게 해야합니다. 단, 이러한 가속화는 여러개의 CPU 코어를 가진 경우에만 가능합니다. 모.. 2022. 9. 4.
프로세스와 스레드 옛날의 컴퓨팅 환경 초기의 컴퓨터들은 한번에 하나의 작업만을 수행할 수 있는 상태였습니다. 기본적으로 CPU는 한번의 하나의 작업만 수행할 수 있기 때문입니다. 예를들어, 우리가 프로그램을 하나 다운 받으려고 하면 그 동안 아무 작업을 할 수 없는 상태가 되는 것입니다. 이런 상황을 해결하기 위해 프로세스라는 개념이 탄생하게 되었습니다. 프로그램과 프로세스란? 그렇다면 프로그램과 프로세스는 무엇이고 둘의 차이는 무엇일까요? 프로그램 프로그램은 명령어 리스트를 내용으로 가진 디스크에 저장된 파일(실행파일)을 의미합니다. 쉽게 말해서, .exe, .deb 과 같은 실행파일들이 프로그램입니다. 프로세스 다음에 실행할 명령어를 지정하는 프로그램 카운터와 관련 자원의 집합을 의미합니다. 쉽게 말해서, 현재 실행중.. 2022. 8. 31.
시스템 콜 시스템 콜이란? 운영체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스입니다. 커널모드와 유저모드 커널모드와 유저모드는 커널에서 중요한 자원을 관리하고 있기 때문에, 사용자가 마음대로 중요한 자원에 접근하지 못하도록 모드를 나누어서 관리하기 위해 사용됩니다. 유저모드 유저가 접근할 수 있는 영역을 제한적으로 두고, 프로그램의 자원에 함부로 침범하지 못하는 모드입니다. 유저모드에서 코드를 작성하고, 프로세스를 실행하는 등의 행동을 할 수 있습니다. 쉽게말해서, 유저가 사용하는 응용 프로그램이 유저 모드에서 실행된다고 할 수 있습니다. 커널 모드 컴퓨터 시스템의 모든 자원(드라이버, 메모리, CPU)에 접근, 명령을 할 수 있습니다. 커널모드에서는 모든 종류의.. 2022. 8. 30.
운영체제와 IO / Interrupt 운영체제란? 운영체제는 컴퓨터 하드웨어를 관리하는 소프트웨어입니다. 운영체제를 사용하는 이유는 하드웨어와 응용 프로그램 사이의 중재자 역할을 해서 사용자가 응용 프로그램을 사용할 수 있도록 도와줍니다. 운영체제의 역할 운영체제의 역할은 다음과 같습니다. 프로세서, 기억장치, 입출력장치, 파일 및 정보 등의 자원을 관리합니다. 자원을 효율적으로 관리하기 위해 자원의 스케줄링 기능을 제공합니다. 사용자와 시스템간의 편리한 인터페이스를 제공합니다. 시스템의 각종 하드웨어와 네트워크를 관리, 제어합니다. 데이터를 관리하고, 데이터 및 자원의 공유 기능을 제공합니다. 시스템의 오류를 검사하고 복구합니다. 자원 보호 기능을 제공합니다. 입 출력에 대한 보조 기능을 제공합니다. 가상 계산기 능력을 제공합니다. 운영체.. 2022. 8. 28.