1. 인턴십(또는 신입으로서 일)을 시작하기 전에 팀멤버들을 만나서 소통하라. 자신을 소개하라. 2. 멍청한 질문이라는건 존재하지 않는다, 주저하지 말고 질문하되 그 질문에 답을 해줄수 있는 적절한 사람에게 하라. 3. 질문하기전에 문제에대해서 충분히 고민해보고 해결하려고 노력하라. 4. 스스로 모든 문제를 해결하려고 하지마라. 5. 반드시 코드를 제출하기전에 테스트를 충분히 작성하라. (테스트를 작성하지 않은 코드는 쓸모없다.) 6. 데드라인을 넘겼다고 해서 세상종말인 것은 아니다. 세상종말은 커뮤니케이션을 하지 않을때이다. 항상 내가 하는 일을 설명할 준비가 되어있고, 현재 겪고있는 이슈들을 커뮤니케이션하라. 다른 사람의 생각을 짐작하지 말고 커뮤니케이션 하라. 7. 장기적으로 성장하고 싶으면 , 시니어들의 설명을 귀담아듣고 메모하라. 출처 : Top 6 Tips to survive as a Junior Developer or Intern (from an Amazon SDE Intern)
*목적 Race Condition방지, data corruption 방지 *Race condition 특정 접근 순서에 따라서 실행결과가 달라지는 경우 *silient corruption data corruption을 운이좋게 피해간 경우 *Non-preemptive kernel no race condition. 평균 대기시간 증가 *Critical Section process들이 공유변수들을 수정할수 있는 코드의 영역 *Critical Section Problem critical section에는 오직 한 process만 실행되도록 하는 문제 Requirement : 1) mutual exclusion : critical section에는 오직 한 process만이 실행될수 있다. 2) progress : 어떤 process가 임계영역에 들어가려 할때, 무기한 연기가 되어서는 안된다. 3) Bounded Waiting : 어떤 process가 임계영역에 들어가기 위해 대기하는 시간은 유한해야한다. 구현방법: Static Alternation progress requirement를 만족하지 않음. 한 프로세스가 실행되고나서 다른 process가 실행되기 전까지는 무기한 연기됨. Peterson’s algorithm progress, Bounded waiting 모두 만족 Special H/W instruction atomic operation을 코드로 구현하는 것이 아니라, 하나의 instruction으로 구현. Mutex Locks critical section 문제를 해결하기 위한 SW tool 문제점 : busy waiting이 발생함 bush waiting이란 instruction을 수행하면서 기다림(CPU cycle 낭비) 해결책 : 1) process를 semaphore의 waiting queue에 넣고 wait state로 전환 2) CPU schedular가 다른 process를 schedule 3) 다른 process가