1. 유한 버퍼 문제 - 유한 버퍼 문제는 동기화 문제의 대표적인 예로서 생산자는 데이터를 만들어서 버퍼에 저장하는 프로세스를 뜻하고, 소비자는 버퍼에 있는 데이터를 꺼내서 소비하는 프로세스를 뜻한다. 버퍼는 공유자원이기 때문에 생산하고 소비하는 작업이 서로 상호배제 되어야 하는데, 이 두개를 병행하게 실행시킬 경우 올바르게 동작하지 않는다. 왜냐하면 두 개의 프로세스가 동시에 변수 counter를 조작하도록 허용하였기 때문인데, 이를 race condition 이라고 한다. 따라서 하나의 프로세스만이 변수를 조작할수 있도록 프로세스를 동기화 시켜야 한다. ( 동기화 : 순서에 있어 질서가 잘 맞게 하는것 ) 2. 임계 영역 프로세스는 코드, 데이터, 스택 영역으로 이루어져 있다. 각각의 프로세스는 임계..
리눅스 실습 시간에 배운 Run-Length Encoding 알고리즘 간단하게 복습 기본적인 개념은 "중복되는 문자를 한 문자로 치환시키는 것" 이다. 예를들면 텍스트 파일의 내용이 " AAABCDDDDDOS " 로 되어있다고 하면 " A3BCD5OS " 로 이렇게 중복되는 문자를 숫자로 치환하는것이다. 하지만 압축을 했으면 복호화의 과정이 필요한데 만약 저렇게 되어있을경우 3이 실제로 입력된 문자인지 치환된 문자인지 구별하기 어렵다는점이 있다. 따라서 치환된부분을 탈출문자 (Escape) 문자를 이용하여 나타낼 수 있다. " *3ABC*5DOS " 이렇게 *로 나타내는것이다. 그래서 탈출문자로 문자이기때문에 거의 쓰이지않는문자를 쓰는게 중요하다. 코드 예시 int f(int n) { i#include ..