분류 전체보기
-
-
[Makefile] make: *** [test] Error 142seoul 2021. 5. 25. 13:46
make: *** [test] Error 1 에러가 아니라 Makefile로 방금 실행시킨 파일이 0이 아닌 1로 끝났음을 알려주는 메세지임. 만약 코드를 수정해서 127을 반환하도록 하면 make: *** [test] error 127를 출력함. //Makefile 예시// NAME= philo_one CC= gcc CFLAGS= -Wall -Werror -Wextra SRCS= main.c OBJS= $(SRCS:.c=.o) all:$(NAME) $(NAME):$(OBJS) %.o:%.c $(CC) $(CFLAGS) -o $(NAME) main.c -lpthread clean: @rm -rf *.o fclean:clean @rm philo_one re:fclean all test:re ./$(NAME..
-
[Philosophers] 필로소퍼 70시간만에 끝내기(2)-첫번째 문제 파악하기42seoul 2021. 5. 21. 16:29
첫번째 문제 풀기: philo_one program name: philo_one turn in files: philo_one/(폴더에 넣으라는 뜻) makefile: 만들어라 arguments: 철학자의 수, 죽는 시간, 먹는 시간, 자는 시간, [각 철학자가 먹어야하는 횟수(선택적)] non common rules 각 철학자 사이에 포크가 하나 있음. 그러므로 왼쪽에 하나 오른쪽에 하나씩 있음. 포크를 겹치게 하는 것을 방지하기 위해, 각각을 뮤텍스로 그 상태를 보호해야 함. 각 철학자는 thread임 thread가 뭔지 먼저 찾아보기 사용함수 목록 memset printf malloc free write usleep 마이크로초 동안 대기 unistd.h 사용방법 예시: usleep(1000 * 100..
-
[Philosophers] 필로소퍼 70시간만에 끝내기(1)-과제파악하기42seoul 2021. 5. 18. 16:53
3써클인데 필로소퍼 하는 이유 6월 8일에 Inception이 5써클로 이동하고 Philosophers가 3써클로 내려온다고 해서 미리 Philosophers를 해놓으려고 한다. 하루에 7시간씩하면 10일만에 끝나겠지? + 필로소퍼는 과제 3개를 해야하는데 6월 8일에 3써클로 내려올때 셋중에 일부가 보너스로 넘어간다고 한다. 과제파악 식사하는 철학자들을 이용한 쓰레드, 프로세스 익히기 과제(쓰레드는 같은 메모리를 공유, 프로세스는 부모의 데이터를 그대로 복사하여 자식이 사용함, 고로 자식 프로세스에서의 자료 변경은 부모 프로세스의 자료에 영향을 주지 않음 등의 차이가 있다. 이걸 공부해야함.) 포크가 양쪽에 있음 -> 포크가 두개가 있어야 먹을 수 있음. 먹고 나면 자야함, 자고나면 생각해야함 -> 정..
-
-
[libasm] 어셈블리 (about 1 week) - 2일차(ft_strlen, ft_strcmp)42seoul 2021. 5. 6. 17:00
어셈블리 2일차(2) - ft_strlen, ft_strcmp에서 보아야할 개념들 jmp jmp는 무조건 점프이다. 조건 없이 주소로 점프한다. 유용하게 이용하면 strlen 잘 짤 수 있음 je & jne je는 zero flag가 1일 때 수행함. jne는 je에 not이 붙은 것, je가 zero flag가 1일 때 수행한다면 jne는 zero flag가 0이면 jump 수행함. je: jump if equal, jne: jump if not equal 사용예시: cmp 후에 jne쓰면 비교하여 다른 경우 jne 라인을 수행함 Zero Flag (ZF) : 단일비트플래그, 연산 결과가 0일때 1로 설정. [출처] sub, cmp sub(subtraction)는 빼기, cmp(compare)는 비교함..
-
[libasm] 어셈블리 (about 1 week) - 2일차(ft_write, ft_read)42seoul 2021. 5. 6. 16:47
어셈블리 2일차 NASM flag (-f macho64) -f : format Specifies the output file format. To see a list of valid output formats, use the -hf option.[man page] macho는 파일 포맷임 -> OS X에서 사용하는 실행 파일(Mach-O)[참고 블로그] OS X 실행파일(Mach-O) 헤더 구조와 유용한 툴들 MS윈도우에서 사용하는 PE와 유닉스의 ELF 포맷은 유명하지만 맥에서 사용하는 Mach-O 포맷은 상대적으로 덜 알려져 있는 것 같습니다. 그래서 OS X의 실행파일 포맷 중 헤더 부분에 대해서만 간단히 www.cocoadev.co.kr ft_read & ft_write 에러 처리 syscall을 ..