목록42 (7)
혼자 정리
Mutex lock mutex : mutual exclusion (상호 배제) 임계 영역 진입할 때 열쇠(lock) 가지고 들어가고, 나올 때는 열쇠 반납하는 느낌while (true) { acquire lock critical section release lock remainder section } acquire()와 release()의 두 함수 available의 불리안 변수. : lock을 얻을 수 있는 상황이면 true, 아니면 false. acquire() { while (!available) ; /* busy wait */ available = false; } release() { available = true; } acquire()와 release()과정도 atomically하게 이루어져야 ..
cf) 내용에 있는 오류로 발생하는 문제는 책임지지 않습니다. Data race 다음 코드 예시를 보자 #include #include int sum; void *run(void *param) { int i; for (i = 0; i < 10000; i++) sum++; pthread_exit(0); } int main() { pthread_t tid1, tid2; pthread_create(&tid1, NULL, run, NULL); pthread_create(&tid2, NULL, run, NULL); pthread_join(tid1, NULL); pthread_join(tid2, NULL); printf("%d\n", sum); }메인 함수에서 tid1과 tid2라는 스레드를 생성하였고 각각의 스레..
open 함수 #include 늘 써오던대로 파이프 라인의 끝에 명시한 파일이 없는 경우 생성하므로 기존에 쓰던 플래그에 더해서 O_CREAT플래그를 사용해야할 것 같다. error발생시 -1 반환 close 함수 #include 파일 디스크립터 넘겨주면 fd table에서 descriptor 삭제. open과 맞물려서 사용 fork() 호출시 부모 프로세스와 자식 프로세스 간 파일 디스크립터 테이블 동일하므로 같은 파일에 대해 같은 fd를 가짐. 그렇지만 이는 복사본이므로 한쪽 프로세스에서 close(fd)를 하는 경우에 다른 프로세스에서 닫히지는 않는다. read 함수 #include or or 읽은 만큼 반환, 그 후 eof 만나면 0 반환, 오류시 -1 반환 write 함수 #include 쓴 바..
(Advanced Programming in the UNIX Environment, Rago, Stephen A., Stevens, W. Richard 저. 3판 참조) 책에서 사용하는 헤더 && 자체 에러 함수 apue.h /* * Our own header, to be included before all standard system headers. */ #ifndef _APUE_H #define _APUE_H #define _POSIX_C_SOURCE 200809L #if defined(SOLARIS) /* Solaris 10 */ #define _XOPEN_SOURCE 600 #else #define _XOPEN_SOURCE 700 #endif #include /* some systems still..
https://www.gnu.org/software/bash/manual/html_node/Redirections.html Redirections (Bash Reference Manual) 3.6 Redirections Before a command is executed, its input and output may be redirected using a special notation interpreted by the shell. Redirection allows commands’ file handles to be duplicated, opened, closed, made to refer to different files, and can www.gnu.org https://architectophile.t..
* 저도 처음 해보는 작업이라 아래 적은 글에는 틀린 내용이 있을 수도 있습니다. 또 '왜 그렇게 설정을 하는지'에 대해서는 생략한 부분이 많습니다. 첫번째는 제가 잘 모르는 부분도 많기 때문이고, 두번째는 제가 나중에 다시 설정할 때 빠르게 필요한 부분만 읽기 위해서입니다. 생략한 내용은 보통은 같이 첨부한 링크에 자세한 내용이 있습니다(간혹 없는 경우도,,). 과제 평가 받으실 때에는 어느 정도 필요한 수준만큼은 설명이 필요하므로 이 점 참고해서 아래 쓰여있는 것보다는 더 자세히 공부하시는 것을 추천드립니다. https://github.com/wshloic/born2beroot_correction/blob/master/correction_born2beroot.pdf (평가 받기 전 점검 필수) wsh..
(틀린 내용 있으면 댓글 바랍니다.) 문제 언급 필수 사항 프로토 타입 : int ft_printf(const char *, ...); libc(c 표준 라이브러리)의 printf를 구현해라(허나 man 3 printf를 참고하라는 것을 감안하여 c 표준에 언급되지 않은 Undefined behavior에 대한 부분은 BSD manual의 '구현 방법에 따라 정의된 행동'(Implementation-defined behavior)을 참고하려고 한다. 명시되지 않은 행동(Unspecified behavior)은 할지 안할지 모르겠다..) cspdiuxX의 서식 지정자를 구현해라. '-0.*'의 어떤 플래그 조합도 다룰 수 있어야 하고, minimum width는 모든 서식 지정자와 결합되어 사용될 수 있어..