목록전체 글 (129)
Written by coh at home
HW solution에서 TestAndSet instruction인 기계어를 만들어줘서 실행 중 preemption되지 않는 것을 보장해 준다. 핵심 문장은 TAS함수를 이욯하는 건데 while(TAS(lock)) do 에서 초기 lock = false이면 첫 번째 프로세스가 일을 하는 동안 두 번째 프로세스가 도착해도 while문을 계속 돌게 된다. 첫 번째 프로세스가 일을 끝내고 lock을 false상태로 만들어주면 두 번째 프로세스가 CS에 진입해서 일을 하게 됨. 근데... 프로세스가 3개 이상이면 BW조건을 위배하게 된다. 자.. 1번이 일을 하고있고 2,3번이 뺑뺑 돌고 있다면 1번이 일을 끝내고 false가 되면 둘 중 3번이 들어온다고 해보자. 4번이 새로 while 루프로 들어와서 2,4..
원래 이렇게 TIL 자세히 쓰는 거 좋아하지 않지만 운체 배울 때 배속으로 들어서 그런가 이해가 한 번에 안 되었음 ㅋㅋ 특히 process가 N개 일 때.. 그래서 나중에 또 잊어버릴 수도 있을 거 같아서 좀 자세히 정리하려고 함. Introduction 어떤 도화지가 있을 때 a가 거기에 그림을 그리고 b가 그 위에 그림을 그린다면 엉망이 될 것이다. 따라서 a, b는 서로 대화를 해서 약속을 정해야할 것이다. 즉, 정보를 공유하고 동작을 맞춰야 할 것이다. 이를 multi programming system에서의 syncronization이라고 한다. 프로세스들은 서로 어떻게 동작하는지 모른다. 비동기적인데 시스템에는 Concurrent 하게 여러 개의 프로세스들이 존재한다. 자원을 공유할 때 문제가..

c++의 변수 종류에 참조 변수라는 개념이 추가된다. 일반변수, 포인터변수, 참조 변수... 참조변수란 대체 무엇일까? 그냥 &를 이용해서 a의 또다른 이름을 만든다고 생각해도 된다. c를 출력해보면 10을 출력하게 되고 포인터변수처럼 asterisk를 이용하지 않아도 된다. 그래서 코드를 보면 상당히 직관적이고 간결하다. 참조변수는 그럼 메모리의 어디에 저장될까? 그건 user가 알 수 없다. 그래서 별도 실존하는 것이 아니라고 여겨진다. 음.. &c를 출력해보면 &a와 같이 나오게 되고 c가 참조하는 값은 immutable하다. 축소변환. narrowing conversion 음.. c++부터 변수 초기화 방식으로 {}를 사용하게 된다. 이 때 축소변환으로 초기화를 하게 되면 error 가 발생하게 ..