컴퓨터 하드웨어 위에 설치되어 사용자와 다른 소프트웨어와 하드웨어를 연결하는 소프트웨어. 사용자는 하드웨어에 직접 접근하지 않고 운영체제를 통해서 접근하게 된다.운영체제 - 하드웨어 사이의 상호작용운영체제 - 사용자 & 다른 소프트웨어 사이의 상호작용컴퓨터 시스템의 자
실행중인 프로그램을 말한다.프로세스의 현재 시점의 상태를 나타내는 context들을 아래와 같다.CPU와 관련된 하드웨어 context프로세스는 CPU를 잡고 명령을 수행하므로, 현재 시점에 명령을 어디까지 수행하였는지 알기 위해서 register에 어떤 값을 넣고 있
프로세스 내부에 CPU 수행 단위가 여러개 있는 경우같은 일을 하는 프로세스를 여러개를 실행시키고 싶을 때 하나하나 주소 공간(code | data | stack)을 만드는 것이 아니라 주소 공간은 하나만 띄워놓고(별도의 주소 공간을 만드는 것보다 쓰레드를 만드는 것이
부모 프로세스가 자식 프로세스를 생성한다.(보통 복제 생성(복제한 후 새로운 프로그램을 올림)한다.)부모 프로세스가 자식 프로세스를 생성하기 때문에 트리가 형성된다. 운영체제를 통해서만 생성할 수 있다.fork(): 새로운 프로세스를 생성(부모 프로세스를 복제) 부모
운영체제 안에서 CPU 스케줄링을 하는 코드가 있는 부분. Ready 상태의 프로세스 중 누구한테 CPU를 줄지 결정한다.CPU를 누구한테 줄지 결정됐으면 실제로 그 프로세스에 CPU를 넘겨주는 역할을 하는 운영체제 커널 코드(현재 돌아가고 있는 프로세스의 contex
공유 데이터의 동시 접근 상황에서 데이터 불일치가 발생할 수 있기 때문에 일관성을 유지하기 위해 프로세스 간의 실행 순서를 정해주는 메커니즘이 필요하다.공유된 자원에 여러개의 프로세스가 동시에 접근할 때 발생하는 문제. ex) 공유자원에 count라는 변수가 있을 때,
추상 자료형. 정수값(자원의 갯수)을 가질 수 있다. P 연산(공유 자원을 획득하는 작업)과 V 연산(사용 후 자원을 반납하는 작업)이 정의되어 있다. lock을 걸고, lock을 푸는 과정(세마포 갯수가 1인 경우) / 공유 자원을 획득하고 반납하는 일을 세마포가 처
임시로 데이터를 저장하는 버퍼의 크기가 유한하게 주어진다고 가정한다.2종류의 프로세스가 여러개 존재한다.(Producer, Consumer)Producer는 공유 버퍼에 데이터를 하나 만들어서 집어넣는다.Consumer는 공유 버퍼에 존재하는 데이터를 꺼낸다.문제점:
동시 수행중인 프로세스 사이에서 추상자료형의 안전한 공유를 보장하기 위함프로그래밍 언어 차원에서 Synchronization 문제를 해결하는 high-level synchronization constructP연산, V연산을 통해 코딩이 쉬워졌음에도 불구하고 코딩하기 힘
일련의 프로세스들이 서로가 가진 자원을 기다리며 block된 상태이다.즉, 각 프로세스가 일부 자원을 가지고 있으면서 상대방이 가진 자원이 필요한 경우 영원히 행동을 할 수 없는 상태가 되는데 이걸 deadlock이라고 한다. 양보하는 프로세스가 없다면 진행할 수 없다