입력 : 세로 크기 N, 가로 크기 M ( 2 > m >>n; for (int i = 0; i > map[i][j]; if (map[i][j] == 1) qu.push({ i,j });// 익은 토마토의 자리는 큐에 넣어준다. else if (map[i][j] == 0) tomato_count++; // 안익은 토마토의 갯수를 카운트한다. } } void bfs() { // tomato_count 가 모두 소진됐다면 토마토가 모두 익은것 // tomato_count 가 남아있다면 ( 0 이상 ) 토마토가 익지 못하는 상황 -> -1 출력 while (!qu.empty()) // 큐가 공백이 될때까지 반복한다 { int que..
1. 기본적 하드웨어 - 주 메모리와 프로세서 내장 레지스터는 CPU가 직접 접근할수 있는 저장장치이다. 모든 실행되는 명령어와 데이터는 CPU가 직접적으로 접근할 수 있는 주 메모리오 레지스터에 있어야 한다.CPU의 내장 레지스터들은 일반적으로 CPU 클록의 1 사이클내에 접근이 가능한데 , 메모리 버스를 통해서 전송되는 주 메모리의 경우에는 많은 CPU 클록 틱 사이클이 소요되고, 지면(Stall) 현상이 발생하기도 한다. 따라서 CPU와 주 메모리 사이에 캐시(Cache)메모리를 추가하여 속도의 차이를 완화시킨다. 이러한 속도 차이에 대한 고려뿐만 아니라 보호기법등 여러가지 구현방법들이 있다. 2. 메모리 보호 기법 - 프로세스가 합법적인 영역만 접근하도록 설정하는것이 필요하다. "기준(base)"..
여러개의 프로세스들이 한정된 자원을 가지고 서로 경쟁할때 생기는 문제로 대기 중인 프로세스들이 다시는 그 상태를 변경시킬 수 없을때의 상황을 "Dead Lock", 즉, 교착상태라고 한다. 일반적으로 프로세스는 1) 요청 2) 사용 3) 방출 의 과정을 따른다. 1. 교착상태 특징 교착상태는 아래의 4가지 조건을 성립할때 발생할 수 있다. 1) 상호 배제 ( Mutual Exclusion ) - 한 번에 한 프로세스만이 그 자원을 사용할 수 있고, 다른 프로세스가 자원을 요청하면, 요청 프로세스는 자원이 방출될 때까지 반드시 지연되어야 한다. 2) 점유하며 대기 ( Hold and Wait ) - 프로세스는 최소한 하나의 자원을 가지고 있는 상태에서 , 다른 프로세스에 의해 점유된 자원을 얻기 위해서는 ..