목록전체 글 (280)
내 잡다한 노트
공유 자원 여러 프로세스가 공동으로 사용하는 변수, 메모리, 파일같은 자원을 뜻한다. 임계구역 공유 자원들은 어떤 프로세스가 먼저 사용하느냐에 따라 값들이 달라질 수 있다. 이런 순서에 따라 달라지는 프로그램의 영역을 임계구역이라고 한다. 이런 임계구역은 전역변수 뿐만 아니라 하드웨어의 자원도 될 수 있다. 예를 들어 프린터. 임계구역 문제 해결 조건 세 가지 조건을 만족해야 문제를 해결할 수 있다. 1. 상호 배제 한 프로세스가 임계구역에 들어가면 다른 프로세스는 들어갈 수 없다. 2. 한정 대기 어떤 프로세스도 무한 대기하지 말아야 한다. 3. 진행의 융통성 한 프로세스가 다른 프로세스의 진행을 방해해서는 안된다. 임계구역을 아무도 쓰지 않는다면 기다릴 필요없이 쓴다.
프로세스간에 자원들의 정보를 알려주기 위해 서로 통신을 한다. 통신의 종류로는 내부 데이터 통신, 프로세스 간 데이터 통신, 네트워크를 이용한 통신이 존재한다. 내부데이터는 한 프로세스에서 2개 이상의 스레드가 존재할 때 스레드끼리 통신을 하는 경우를 말한다. 내부 데이터는 보통 전역변수와 파일 방식을 사용하고 프로세스 간에는 파일과 파이프, 네트워크를 이용할 때는 소켓을 활용한다. 즉, 통신의 방식에는 전역변수, 파일, 파이프, 소켓등이 있다. 통신 방향에 따른 분류 단방향통신 : 한쪽 방향으로만 통신할 수 있는 통신. 예로 전역변수와 파일이 있다. 양방향통신 : 양쪽 방향으로 통신가능. 소켓이 그렇다. 반양방향통신 : 양쪽 방향으로 전송할 수 있지만 동시 전송은 불가능하고 특정 시점에 한쪽 방향으로만..
정규 표현식에는 메타 문자가 있다. 그것은 그 문자가 가진 뜻이 아닌 특별한 용도로 사용하는 문자를 의미한다. 문자 클래스 : [ ] 문자 클래스로 만들어진 정규식은 "[ ] 사이의 문자들과 매치" 라는 의미를 갖게 된다. [abc]라면 이 표현식의 의미는 "a, b, c 중 한 개의 문자와 매치" 를 뜻한다. 두 문자 사이에 - 을 사용하면 두 문자 사이의 범위를 의미한다. 문자 클래스 안에 ^ 메타 문자를 사용할 경우 반대라는 의미를 갖는다. 예를 들어 [^0-9]라는 정규 표현식은 숫자가 아닌 문자만 매치된다. 자주 사용하는 정규 표현식은 별도의 표기법으로 표현할 수 있다. 다음을 기억해 두자. \d - 숫자와 매치, [0-9]와 동일한 표현식이다. \D - 숫자가 아닌 것과 매치, [^0-9]와 ..
시간제한은 1초인데 입력받는 호수의 크기는 1500 * 1500로 크기가 크다. 그래서 단순히 bfs로 탐색하면 시간제한에 걸린다. 그래서 물과 얼음이 만나 얼음이 녹을 때 얼음의 자리를 임시물 큐에 넣어놓아 다음날 다시 탐색을 할 때 전체 물을 탐색할 필요없이 임시물 큐에 있던 자리만 탐색을 해서 중복을 없앤다. 이 같은 방식으로 백조도 다른 백조를 만날 수 있는지 확인한다.
인터럽트는 여러가지 이유로 발생한다. 프로세스가 입출력때문에 대기상태로 가서 완료가 되면 인터럽트 신호를 보낼 수도 있고 컴퓨터에 오류가 발생해 오류 처리하라고 인터럽트 신호를 보낼 수도 있다. 동기적 인터럽트 프로세스가 실행 중인 명령어로 인해 발생한다. 사용자 인터럽트라고도 한다. 사용자가 실행하다가 발생하는 인터럽트이다. 비동기적 인터럽트 하드웨어의 오류로 발생하는 인터럽트를 뜻한다. 인터럽트는 각각의 번호가 있고 번호마다 인터럽트가 발생 시 핸들링하는 함수들이 존재한다. 인터럽트를 처리할 땐 인터럽트 벡터라는 자료구조가 존재해 벡터에서 한꺼번에 인터럽트를 묶어서 처리한다. 이 벡터에는 여러개의 인터럽트가 번호와 핸들링되는 함수를 가진채로 존재하고 해당 번호의 인터럽트가 발생하면 1을 증가시키는 방..
준비 상태의 다중 큐 우선순위에 따라 여러가지 큐가 존재하고 그 큐에 프로세스 제어 블록을 넣어 놓는다. 고정 우선순위 방식 프로세스를 처음 우선순위를 정할 때 그 우선순위가 계속 고정적으로 변하지 않는 방식을 뜻한다. 작업 효율이 떨어진다. 변동 우선순위 방식 프로세스를 실행하는 도중에 다른 프로세스와의 관계나 여러가지 이유로 우선순위를 바꾸는 방식을 뜻한다. 낮은 우선순위의 프로세스가 중요한 자원을 할당하고 있다면 그 프로세스가 실행이 끝나야 다른 프로세스들이 그 자원을 쓸 수 있게 된다. 하지만 우선순위가 낮아 빨리 처리할 수가 없어지니 우선순위를 높여 빠르게 실행시켜버리는 것을 반전 우선순위라고 한다. 대기 상태의 다중 큐 대기 상태는 입출력때문에 가다보니 다양한 입출력에 따라 여러가지 큐를 둬서..
선점형 스케줄링 프로세스가 진행 도중에(CPU를 할당 받아) 운영체제가 중지 시킬 수 있는 스케줄링 방식 대표적인 예로는 인터럽트가 있다. 현대의 시분할 시스템에 사용이 된다. 단점으로는 문맥 교환의 오버헤드가 많다. 비선점형 스케줄링 프로세스가 진행이 되면 운영체제는 중지 시킬 수 없는 스케줄링 방식 과거에 많이 쓰였던 방식이다. 중지가 되지 않아 시간이 긴 프로세스가 실행되면 중지할 수가 없어 전체적인 처리 효율이 낮아진다. 프로세스 우선순위 우선순위가 높다는 것은 더 빨리 자주 실행된다는 것이다. 커널 프로세스와 사용자 프로세스간의 우선순위 커널 프로세스는 자원과 관련된 중요한 프로세스이기 때문에 두 개의 프로세스를 실행하게 되면 커널 프로세스의 우선순위가 높아 먼저 처리가 된다. 전면 프로세스와 ..
스케줄링 프로세스의 상태를 변경하고 프로세스가 작동하는 시간인 타임슬라이스를 정해 효율적으로 작동하게끔 돕는다. CPU와 시스템 자원을 어떻게 배정할지 결정하는 일을 한다. 고수준 스케줄링 시스템의 전체적인 통제를 함. 작업 스케줄링이라고 한다. 시스템 내의 전체 작업 수를 조절한다. 어떤 작업을 시스템이 받아들일지 또는 거부할지를 결정한다. 중간 수준 스케줄링 고수준 스케줄링과 저수준 스케줄링 사이에 일어나는 스케줄링이다. 중지와 활성화로 전체 시스템의 활성화된 프로세스 수를 조절한다 일부를 보류 상태로 보내는 식으로 과부하를 막는다. 저수준 스케줄링 프로세스 단계에서 배운 CPU 스케줄링은 이 단계에 해당한다. 스케줄링의 목적 공평성 효율성 안정성 확장성 반응 시간 보장 무한 연기 방지