📌 공유 자원에 대해 여러 프로세스가 동시에 접근을 시도할 때, 타이밍이나 순서 등이 결과값에 영향을 줄 수 있는 상태 → 공유 자원에 여러 프로세스가 동시에 접근할 때 자료의 일관성을 해치는 결과가 나타날 수 있음 ▶️ 발생하는 경우 커널 코드 실행 중에 인터럽트가 발생할 경우 문제점 : 커널모드에서 데이터를 로드해 작업을 수행하다가 인터럽트가 발생해 같은 데이터를 조작하는 경우 해결 : 커널모드에서 작업을 수행하는 동안 인터럽트를 disable시켜 CPU제어권을 가져가지 못하도록 함 프로세스가 ‘system call’을 하여 커널모드로 진입하고 작업을 수행하는 도중 문맥 교환이 발생할 때 문제점 : 프로세스 1이 커널모드에서 데이터를 조작하던 도중 시간이 초과되어 CPU제어권이 프로세스 2로 넘어가 ..
📌 교착상태(Deadlock) → 시스템 자원에 대한 요구가 뒤엉킨 상태 → 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황 ☑️ 데드락의 발생조건 상호 배제 한 번에 프로세스 하나만 해당 자원을 사용할 수 있음. 사용 중인 자원을 다른 프로세스가 사용하려면 요청한 자원이 해제될 때까지 기다려야 함 점유 대기 자원을 최소한 하나 보유하고, 다른 프로세스에 할당된 자원을 점유하기 위해 대기하는 프로세스가 존재해야 함 비선점 이미 할당된 자원을 강제로 빼앗을 수 없음 순환 대기 대기 프로세스의 집합이 순환 형태로 자원을 대기하고 있어야 함 ☑️ 데드락의 해결방법 📌 데드락 예방(Prevention) : 데드락의 발생조건 4가지 중 하나라도 발생하지 않게 하..
📌 다수의 프로세스가 준비 상태에 있을 때, CPU가 어느 프로세스를 먼저 처리하도록 할 것 인가를 결정하기 위한 작업 ☑️ 스케줄링의 단계 장기 스케줄링(Long-term Scheduling) 장기 스케줄링은 고수준 스케줄링, 작업 스케줄링이라고도 함 전체 시스템의 부하를 고려하여 작업을 시작할지 말지를 결정 가장 큰 틀에서 이루어지는 CPU 스케줄링으로 시스템 내의 전체 작업수를 조절 중기 스케줄링(Medium-term Scheduling) 중기 스케줄링은 중간 수준 스케줄링이라고도 불림 중기 스케줄링은 이미 활성화가 된 프로세스들에 대한 관리를 함 → 이미 활성화된 프로세스들의 중지와 활성화로 전체 시스템의 활성화된 프로세스 수를 조절하여 과부하를 막음 운영체제는 처리가 보류된 프로세스들을 처리 재..
📌 프로세스간 통신 → 프로세스들 사이에 서로 데이터를 주고받는 행위 또는 그 방법 ☑️ Process는 완전히 독립된 실행객체 → 다른 프로세스의 영향을 받지않는다는 장점 → but, 독립되어있는 만큼 별도의 설비가 없이는 서로간에 통신이 어렵다는 문제 ☑️ 커널 영역에서 IPC라는 내부 프로세스간 통신을 제공함으로써 프로세스간 통신을 할 수 있음 IPC의 종류 ☑️ PIPE(파이프) 두 개의 프로세스를 연결하여 하나의 프로세스는 데이터를 쓰기만 하고, 다른 프로세스는 데이터를 읽기만 함 부모 자식 간에 단방향 통신으로 자주 사용 한쪽 방향으로만 통신이 가능한 PIPE의 특징 때문에 Half-Duplex(반이중)통신이라고도 불림 하나의 통신선로는 읽기/쓰기 중 하나만 가능하므로 만약 읽기/쓰기(송/수신..
프로세스 관리 구동 중인 프로세스가 여러 개일 때, CPU 스케줄링을 통해 프로세스를 관리하는 것 CPU들은 각 프로세스들에 대해서 구분할 수 있어야 관리가 가능 → 각기 다른 프로세스들의 본연의 특징을 가지고 있는 Process Metadata 라는 정보를 활용 ✅ Process Metadata가 담고 있는 정보 프로세스 고유 ID (PID) : 프로세스 고유 식별 번호 프로세스 상태 : 프로세스의 현재 상태(준비, 실행, 대기상태)를 기억 프로세스 우선순위 : 스케줄링 관련 정보를 기억 Program Counter (PC) : 다음에 실행되는 명령어의 주소를 기억 CPU 레지스터 : 프로세스의 레지스터 상태를 저장하는 공간 Owner : CPU 사용시간의 정보, 각종 스케줄러에 필요한 정보 Memor..
📌 사용자 모드에서 커널 모드로 전환하기 위해 필요한 인터페이스 ✅ 운영체제는 사용자 모드(User mode)와 커널 모드(Kernel mode)로 나뉘어 동작하고, 이렇게 나뉘어 동작하는 것을 이중 동작 모드(Dual Mode Operation)라고 함 ☑️ 사용자 모드 : 접근할 수 있는 메모리 영역이 사용자에게 허용된 정도로 제한되어 있고, 하드웨어에 직접적으로 접근할 수 없음 ☑️ 커널 모드 : 모든 시스템 메모리와 CPU Instruction에 접근 가능하고, 하드웨어에 직접적으로 접근할 수 있음 ⇒ 커널 모드가 사용자 모드보다 높은 권한을 가져 사용자 모드에서 유저 애플리케이션의 필요에 따라 커널 모드로 변환하여 시스템 영역에 접근할 수 있음 ☑️ 왜 이중 동작 모드 구동 ? : 시스템을 보호..