목록분류 전체보기 (166)
공부기록
교착상태 (dead lock) 프로세스들의 집합이 더 이상 진행을 못하고 영구적으로 블록되어 있는 상태 교착상태는 시스템 자원에 대한 경쟁 도중 발생할 수도 있고 프로세스 간 통신 도중에 발생할 수도 있음 집합 내의 한 프로세스가 특정 사건의 발생을 기다리며 대기하고 있고, 이 사건이 집합 내의 다른 블록된 프로세스에 의해 발생될 수 있을 때 이 프로세스의 집합은 교착상태가 됨 교착상태는 기다리던 사건이 결코 발생하지 않기에 영구적이다. 교착상태는 두 개 이상의 프로세스들이 서로 충돌되는 자원 요구를 할 때 발생한다. 교착상태 해결 방안 접근 방법 자원 할당 정책 구체적인 기법 장점 단점 예방 보수적 (자원 할당이 가능하더라도 조건에 따라 할당하지 않는다) 모든 자원을 한꺼번에 요구 순간적으로 많은 일을..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/eaUZHy/btq4WXkpv3m/ZZO60Me9j7Wz2R8X1tK0wk/img.gif)
프로세스의 특징 자원 소유권 스케줄링/실행 interleave하게 수행 프로세스는 OS에 의해 스케줄 되고 디스패치 되는 개체임 자원 소유권 / 스케줄링 특성은 각 프로세스의 본질 (essence) 두 가지 특성은 독립적이며 OS에 의해 독립적으로 취급 될 수 있음 디스패칭의 단위는 thread or lightweight process 소유권의 단위는 process or task 다중스레딩 OS 가 하나의 process 내에서 수행되는 여러 개의 스레드를 지원하는 기능 다중 스레드 환경에서 프로세스는 보호의 단위와 자원할당의 단위로 정의 프로세스 이미지를 유지하는 가상의 주소공간 처리기, (IPC하는) 다른 프로세스, 파일, 입출력 자원 (장치, 채널) 등에 대한 보호된 접근 프로세스는 하나 이상의 쓰레..
세마포어 운영체제와 프로그램 언어 수준에서 병행성을 위해 제공되는 기법 세마포어 모니터 메세지 전달 Dijkstra 기법의 기본적인 원리 - 세마포어 두 개 이상의 프로세스들은 간단한 형태의 신호를 이용해 협력 한 프로세스가 특정 신호를 수신할 때까지 정해진 위치에서 중지하도록 강제하는 것 신호를 보내고 받기 위해 세마포어라 불리는 특수 변수들을 사용 semSignal(s) : 세마포어 s를 통해 신호를 전송 semWait(s) : 세마포어 s를 통해 신호를 수신 특정 신호를 받으려는 프로세스에게 아직 해당 신호가 전달되지 않았다면, 전달될 때까지 프로세스의 수행은 보류됨 세마포어 정수값을 가지는 변수 세가지 연산을 통해 접근 세마포어 초기화 : 세마포어는 음이 아닌 값으로 초기화 semWait 세마포어..
병행성의 원리 시스템에서 프로세스들은 병행 처리되며, 단일 처리시스템에서는 프로세스들이 인터리빙(interleaving), 즉 여러 프로세스가 서로 번갈아 수행됨 인터리빙은 실제로 병렬처리되는 것은 아니고, 프로세스들 간의 문맥교환 비용도 발생하지만, 처리 효율과 구조적 프로그래밍에 유익함 다중처리기 시스템에서는 프로세스들의 인터리빙과 오버래핑(overlapping)도 지원 오버래핑 : 프로세스들이 여러 개의 처리기들에서 실제로 병렬 수행되는 것 인터리빙과 오버래핑의 문제점 단일 처리기 환경에서, 프로세스 간의 수행 순서는 비동기적이라는 다중프로그래밍의 기본 특성에서 다음과 같은 문제 발생 전역 자원 공유의 어려움 두 개의 프로세스가 같은 전역변수에 write하는 경우, 프로세스의 순서에 따라 프로세스의..
문제 https://programmers.co.kr/learn/courses/30/lessons/42890# 코딩테스트 연습 - 후보키 [["100","ryan","music","2"],["200","apeach","math","2"],["300","tube","computer","3"],["400","con","computer","4"],["500","muzi","music","3"],["600","apeach","music","2"]] 2 programmers.co.kr 코드 더보기 import java.util.*; class Solution { int count = 0; public int solution(String[][] relation) { int answer = 0; boolean chec..
더보기 import java.util.*; class Solution { class Pair{ int row; int col; public Pair(int row, int col){ this.row = row; this.col = col; } @Override public boolean equals(Object o){ Pair pair = (Pair)o; if(this.row == pair.row && this.col == pair.col) return true; return false; } @Override public String toString(){ return ("Node{" + "row : " + Integer.toString(this.row) + ", col : " + Integer.toStr..
시스템 구조에 따른 프로세스 관리의 구분 다중 프로그래밍 (Multiprogramming) 단일 처리기 상에서 다수의 프로세스 관리 멀티 프로세싱 (Multiprocessing) 다중처리기 상에서 다수의 프로세스 관리 분산 처리 (Distributed processing) 다수의 분산된 컴퓨터 시스템들 상에서 수행되는 다수의 프로세스 관리 클러스터 시스템 병행성 프로세스 관리에서 핵심적인 주제 프로세스의 병행처리, 프로세스간 통신, 자원에 대한 공유 및 경쟁, 프로세스 활동들의 동기화, 프로세스에 대한 처리기 시간 할당 등 다양한 이슈들을 포함 병행성의 발생 상황 여러개의 응용프로그램들 여러개의 활동중인 프로세스들이 처리시간을 동적으로 공유할 수 있도록 다중 프로그래밍이 개발됨 구조화된 응용 어떤 응용 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bx0ZMY/btq4cFrlOgU/q1kSyFOatNpjgSlJQbto50/img.png)
단기 스케줄링 평가 기준들 사용자 중심 + 성능 중심 턴어라운드 시간 프로세스가 시스템으로 진입한 후부터 종료할 때까지 걸린 시간을 의미 실제 실행 시간 + CPU 나 다른 자원들을 사용하기 위해 대기한 시간 응답시간 시스템에 요구를 한 뒤 시스템으로부터의 첫 응답이 올 때 까지의 시간 사용자 입장에서 시스템의 반응 속도를 가늠하기 위해서는 텀어라운드 시간보다 응답 시간이 더 현실적 완료 시한 실시간 OS에서, 프로세스가 완료되어야 하는 시점에 deadline (기한)이 있다면 스케줄러는 다른 평가 척도가 희생되더라도 완료 기한을 만족시킬 수 있는 프로세스의 수를 최대화 하는 방향으로 설계되어야 한다. 사용자 중심 + 기타 예측 가능성 같은 작업이라면 항상 같은 기간, 같은 비용으로 실행되어야 한다. 실..