본문 바로가기

CS/운영체제15

병행 프로세스의 여러가지 문제들, 생산자-소비자, 판독기-기록기, 자바 구현 코드, 프로세스 간 통신 1. 생산자-소비자 문제 - 두 협력 프로세스 사이에 버퍼를 두고 생산자와 소비자의 상황을 다루는 문제 - 생산자: 데이터를 넣느 프로세스 - 소비자: 데이터를 꺼내는 프로세스 버퍼에 여러 프로세스가 동시에 접근할 수 없음 - 버퍼에 데이터를 넣는 동안에는 데이터를 꺼낼 수 없음 - 버퍼에서 데이터를 꺼내는 동안에는 데이터를 넣을 수 없음 -> 상호배제 필요 버퍼의 크기가 유한 (유한 버퍼 문제) - 버퍼가 가득 찬 경우 생산자는 대기해야 함 - 버퍼가 빈 경우 소비자는 대기해야 함 -> 동기화 필요 상호배제: 세마포어 mutex를 이용 (초깃값 1) 버퍼가 가득 차 경우 동기화: 세마포어 empty(초깃값 n) // n: 버퍼 크기 버퍼가 빈 경우 동기화: 세마포어 full (초깃값 0) 따라서 3개의.. 2023. 6. 15.
운영체제의 병행 프로세스, 병행성 문제, 세마포어, 상호배제와 동기화 해결 세마포어 자바 구현 코드 1. 병행 프로세스 병행성(Concurrency) => 여러 개의 프로세스 또는 쓰레드가 동시 수행되는 시스템의 특성 병행 프로세스: 동시 수행되는 여러 개의 프로세스 또는 쓰레드 1개의 CPU: 인터리빙 형식 => CPU 입장에서는 순차적으로 처리하는 것 여러 개의 CPU: 병렬 처리 형식 멀티 프로세서 시스템에서의 메모리 구조에 따라 - 강결합 시스템 (공유 메모리 구조) - 약결합 시스템 (분산 메모리 구조) 약결합 시스템에서는 CPU 마다 별도 메모리를 갖는 것. 독립 프로세스 - 수행중인 다른 프로세스에 영향을 주지도 받지도 않음 - 데이터 및 상태를 다른 프로세스와 공유하지 않음 - 프로세스의 실행 -> 결정적: 실행 결과는 입력에 의해서만 결정됨 -> 재생가능 : 같은 입력에 대해 항상 동일.. 2023. 6. 15.
프로세스 스케줄링, 운영체제 스케줄링 알고리즘 1. 프로세스 스케줄링 스케줄링 - 여러 가지 작업의 처리순서를 결정하는 것 - 예: 프로세스 스케줄링, 디스크 스케줄링 등 프로세스 스케줄링 - 주어진 프로세스가 여러 개인 경우, 프로세스 처리순서를 결정하는 것 상위단계 스케줄링 : 시스템의 자원을 효율적으로 이용할 수 있게 함 활성화된 작업들 내에서 하위단계 스케줄링 => 준비큐에서 CPU와 조율 중간단계 스케줄링: 시스템에 대한 단기적인 부하를 조절하도록 함 하위 단계 스케줄링 - 준비 큐에 있는 프로세스를 선택하여 사용 가능한 CPU를 할당(디스패치)하는 역할 - 수행 주체: 디스패처(dispatcher) 스케줄링의 기본 목표 - 공정성: 모든 프로세스가 적정 수준에서 CPU 작업을 할 수 있게 함 - 균형: 시스템 자원이 충분히 활용될 수 있게.. 2023. 6. 15.
운영체제 프로세스와 쓰레드 1. 프로세스 프로세스란? - 실행중인 프로그램 - 프로그램: 동작을 하지 않는 정적, 수동적 개체 - 프로세스: 동작을 하는 능동적 개체 운영체제로부터 자원을 할당 받아 동작한다. - 자원: CPU, 메모리, 입출력장치, 파일 등 - 동작: CPU가 프로세스의 명령을 실행 운영체제(프로세스 관리자)가 처리하는 작업 - 프로세스를 생성 및 종료 - 프로세스를 실행시키기 위한 스케줄링 작업 - 프로세스의 상태 관리 프로세스의 구성 - 메모리 구조 - 프로세스 제어 블록 메모리 구조 - 프로그램 실행에 직접 필요한 코드와 데이터 코드 영역: 프로그램 자체 데이터 영역: 프로그램 실행시 필요한 데이터 -> 상수나 변수의 값(static), 서브 프로그램의 호출 상태 등 프로세스 제어블록 (Process Con.. 2023. 6. 14.
운영체제, 구성, 유형 1. 운영체제란 무엇인가? 하드웨어 소프트웨어 운영체제 - 대표적인 시스템 소프트 웨어 - 컴퓨터 시스템의 자원을 관리하고 컴퓨터 프로그램이 동작하기 위한 서비스를 제공하는 프로그램들의 모음 역할 - 컴퓨터 시스템의 자원 관리 -> 자원: 하드웨어 자원, 소프트웨어 자원, 데이터 -> 저장장치에서 데이터 읽어오기, 키보드나 마우스 제어, 프로그램 실행시 CPU와 메모리를 효율적으로 관리 - 사용자 지원 -> 사용자가 내린 명령을 해석하여 실행하게함 -> 사용자와 하드웨어 사이의 매개체 역할 -> 사용자에게 편의성 제공 목적 운영체제가 없던 초기의 컴퓨터 시스템 -> 응용 프로그램이 직접 컴퓨터 시스템의 자원 제어 -> 응용 프로그램 개발자는 하드웨어 제어 방법을 잘 알아야 함 => 여러 사용자가 하드웨어.. 2023. 6. 14.