
OS 정리 세마포어와 뮤텍스 공유된 자원에 여러 프로세스가 동시에 접근하면서 문제가 발생할 수 있다. 이때 공유된 자원의 데이터는 한 번에 하나의 프로세스만 접근할 수 있도록 제한을 둬야 한다. 뮤텍스(Mutual Exclusion) Lock을 가지고 있는 프로세스/스레드만이 lock해제가 가능하다 Locking Algorithm으로 락 가지고 있는 프로세스/스레드가 임계영역 나갈 때만 해제가 가능 Busy Waiting(SpinLock) - lock이 얻어질 때까지 계속 체크하는 것 세마포어 카운터 변수 ⇒ 운영체제 또는 커널에 저장 wait() : 가능한지 체크, 가능하면 카운터변수 -1, signal(): critical section에서 나올때 s를 1 증가 카운터 변수 값 자연수 가능 ⇒ 즉 여..

C언어 컴파일 과정 https://gracefulprograming.tistory.com/16 전처리 과정 헤더 파일 삽입 - #include 만나면 전처리기가 헤더파일 찾아서 내용 삽입 매크로 치환 및 적용 - #define된 부분 심볼 테이블에 저장, 문자열 만나면 #define된 내용으로 치환 컴파일 과정 전반부: 소스코드 오류 분석, 트리 형태로 표현 중단부: SSA 형태로 변환 → 최적화 → 고급 언어, 어셈블리 언어의 중간형태로 변환 후반부: 최적화 → 어셈블리어로 구성된 .s 파일이 만들어짐 어셈블 과정 어셈블러에 의해 어셈블리 코드 → 기계어로 변환 목적코드(helloworld.o) 파일은 명령어(Instruction)와 데이터(Data) 가 들어있는 ELF 구조를 가짐 링킹 과정 오브젝트..