목록dev-log (172)
오식랜드
교착상태 2개 이상의 프로세스 필요 다른 프로세스 작업을 기다리느라 다른 작업을 진행하지 못하는 상태 아사현상과의 차이점 아사현상 운영체제의 잘못된 정책으로 특정 프로세스가 지연되는 문제 (무한대기) 특정 프로세스가 자원을 가져오지 못해 지연됨 교착상태 여러 프로세스가 작업하다보니 자연발생적으로 일어남 교착상태가 계속되면 아사현상이 됨 다른 프로세스와 공유할 수 없는 자원을 사용할 때 발생 잠금을 사용해도 발생 (임계구역 접근) 데이터베이스 응용 프로그램에서도 발생 (ex. 은행) 자원 할당 그래프 원 : 프로세스 사각형 : 자원 실선 : 할당 점선 :대기 점 : 자원의 수 (사각형 안의 점) → 다중 자원 식사하는 철학자 문제 모드 오른손 포크를 들음 → 모두 못먹음 → 교착상태 상호 배제가 필요 (기..
공유 자원 여러 프로세스고 공동으로 이용하는 변수, 메모리, 파일 등 공동으로 쓰기 때문에 누가 언제 데이터를 읽었는지 썻는지에 따라 결과가 바뀜 경쟁 조건 공유 자원을 두고 2개 이상의 프로세스가 읽거나 쓰려고 하는 상황 누가 먼저 무엇을 했는지에 따라 결과가 바뀜 ⇒ 레이스 컨디션 발생했다고 함 예시공유자원 = 계좌의 돈 레이스 컨디션 = 누가 먼저 실행이 완료되느냐에 따라 결과 바뀜 하나의 계좌에서 한명은 출금을, 한명은 입금을 하는 상황 임계 구역 레이스 컨디션이 발생하게 하는 프로그램 영역 (count++, count—) 프로세스 동시 작업 하면 안됨 하나의 프로레스 작업이 끝나야 다른 프로세스가 임계구역에 접근할 수 있음 생산자-소비자 문제 : in, out이 동시에 일어나는 문제 임계구역 해..
종류 공유 메모리 또는 공유 파일을 이용한 통신 단방향 통신 + 비동기화 통신 프로세스A에서 파일 작성 → 프로세스B에서 파일 읽음 데이터를 주고 받는 방법은 프로세사끼리 알아서 결정 → 프로그래머거 작성한 코드대로 통신 파이프를 이용한 통신 단방향 통신 + 동기화 통신 양방향으로 통신하려면 파이프 2개 필요 운영체제가 제공하는 통신 기법 → 안정적임 fork()로 만들어진 부모-자식 프로세스 간 통신에 파이프 사용 종류 이름 없는 파이프 : 일반적 파이프 이름 있는 파이프 : FIFO라는 파일을 이용해서 서로 관련 없는 프로세스 간 통신에 사용 소켓을 이용한 통신 양방향 통신 + 동기화 통신 네트워크로 연결된 컴퓨터끼리 데이터 주고받기 (여러 컴퓨터의 프로세스끼리 사용) 많은 자원이 소비돼서 같은 컴퓨..
CPU의 명령이 완료되었음을 확인하는데에는 2가지 방법이 있다 폴링 : 입출력을 요청하면 운영체제가 주기적으로 입출력 장치를 직접 확인한다 인터럽트 : 이벤트에 의해 동작한다. 입출력이 완료되면 이벤트를 발생하여 CPU에 알린다. 인터럽트 종류 동기적 인터럽트 프로그램상의 문제로 발생하는 인터럽트 (오버플로우나 언더플로우) 프로세스 중단을 위해 의도적으로 발생시킨 경우 (Ctrl+C) 주변장치 조작에 의한 인터럽트 산술 연산 중 발생하는 인터럽트 (0으로 나누기 등) 비동기적 인터럽트 하드디스크 읽기 오류, 메모리 불량과 같이 하드웨어적 오류 사용자가 사용하는 주변장치 오류 예상치 못한 오류 인터럽트 처리 과정 인터럽트 발생 프로세스 일시 정지 (문맥교환) 재시작을 위해 ISR에 현재 프로세스 관련 정보..
비선점형 FCFS 스케줄링 (First Come First Serve) = FIFO SJF 스케줄링 HRN 스케줄링 선점형 라운드 로빈 스케줄링 SRT 스케줄링 다단계 큐 스케줄링 다단계 피드백 큐 스케줄링 선택 기준 CPU 사용률 이상적인 수치는 100% 최대한 많이 활용해야 좋음 처리량 단위 시간 당 작업을 마친 프로세스의 수 효율성을 중시 대기시간 프로세스 생성 후 실행 전까지의 시간 응답시간 첫 작업의 첫 출력이 나올 때 까지의 시간 (반응) 실행시간 프로세스 작업이 시작한 후 끝날때 까지 걸리는 시간 반환 시간 프로세스 실행 전 대기시간부터 종료될 떄 까지 걸리는 시간 평균 대기 시간 모든 프로세스의 대기시간의 합 나누기 프로세스의 수 스케줄링 알고리즘 비선점 방식 FCFS (Fisrt Come..
*CPU 1개로 가정 CPU 스케줄링 운영체제의 일부 여러 프로세스 상황을 고려하여 CPU에 자원을 배정 스케줄링 종류 저수준 스케줄링 FIFO : Fisrt In First Out 형식 어떤 프로세스에 CPU를 할당할지, 어떤 프로세스를 대기상태로 보낼지 결정 ready → running 중간수준 스케줄링 중지(Suspend)와 활성화(active)로 전체 시스템 중 활성화 된 프로세스 수를 조절 → 활성상태, 보류상태 일부 프로세스를 중지상태로 옮김 저수준 스케줄링이 완만히 진행되도록 하는 역할 고수준 스케줄링 시스템 전체 작업 수 조정 어떤 작업을 받아들일지 여부를 결정 장기스케줄링 이라고 함 그림 전체 스케줄링의 목적 공평성 모든 프로세스가 자원을 공평하게 배정받아야 함 특정 프로세스가 무한 대기..