목록2021/09/04 (8)
치춘짱베리굿나이스
1. 힙 버퍼 오버플로우 구조체 메모리 할당할때 sizeof(자료형이름) 이 아니라 sizeof(변수이름) 으로 적는 바람에 포인터 크기만큼만 할당됨 바본가? 2. 혼자노는 철학자 스레드 생성할때 인덱스 ++ 안해줌 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 3. 메모리 해제하고 재사용 죽었는지 체크 변수나 철학자 인원수, 철학자 지속시간 등을 다 한 구조체에 몰아넣었는데 해당 구조체 메모리 해제하고 다시 접근해서 터짐ㅋㅋ 4. 데드락 성김이랑 홀짝 나누기 관련해서 그렇게 얘기해놓고선 그거 안해줘서 예쁘게 데드락 걸림 성게가 힌트 줘서 바로 고쳤다 성게 이즈 갓 오늘부터 성게 방향으로 매일 3번씩 절합니다 5. 시간역행 아마 스레드 2가 시간만 저장한 상태에서 컨텍스트 스위칭이 일어나는바람에.. 이렇게된듯..
ㅡ추.추추추.추추추추.추추.추추추추추추.추추.추워 내가미쳐 진짜 마크다운 다깨지는거 돌겠네 노션짱 티스토리똥 💩💩💩💩💩💩💩💩💩💩💩💩 pthread.h pthread_create int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg); attr 변수에 저장된 속성대로 새 스레드를 현재 프로세스 내에 생성한다 attr이 NULL이면 디폴트 속성으로 생성된다 attr 내부 값이 중간에 변한다고 해서 이미 생성된 스레드의 속성이 변하진 않는다 생성된 스레드는 start_routine에 지정된 함수 포인터에 해당하는 함수를 바로 실행시킨다 만약 함수가 종료되면 (return ..
스레드 함수 예제와 다르게 이번에는 메인 스레드와 별개의 스레드에서 하위 스레드를 생성하여 두 속성의 차이를 확인해보았다 pthread_join /* ************************************************************************** */ /* */ /* ::: :::::::: */ /* test_thread_join.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: jiychoi +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2021/08/06 10:25:21 by jiychoi #+# #+# */ /* Updated: 2021/08/06 11:05:40 by jiychoi ### ###..
아니 마크다운이 다 깨지네... 하느님 나에게 왜 이딴 시련을... 코드 /* ************************************************************************** */ /* */ /* ::: :::::::: */ /* test_create_join_detach.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: jiychoi +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2021/08/03 15:02:52 by jiychoi #+# #+# */ /* Updated: 2021/08/03 16:43:38 by jiychoi ### ########.fr */ /* */ /* ************..
프로그램 실행 가능한 코드라인들이 저장된 파일 모든 프로그램은 운영체제로부터 실행되기 위한 메모리 공간을 할당받아야 프로그램에 정의된 대로 동작을 수행할 수 있다 허나 이러한 자원을 할당받지 않았기 때문에 동작하지 않은 채로 저장소 어딘가에 잠들어 있다 (아직 메모리에는 올라가 있지 않은 정적인 상태) 윈도우의 *.exe, 맥의 *.dmg가 이에 해당한다 프로그램을 실행시키면 ↓프로세스가 생성되며, 프로세스는 적절한 자원을 할당받고 이를 이용하여 프로그램에 저장되어 있던 코드라인들을 실행시키면서 우리가 원하는 동작을 하는 것 프로세스 메모리에 올라와 실행되고 있는 프로그램의 인스턴스 (독립적인 개체) 프로그램은 실행 가능한 파일을 일컫고, 프로세스는 이 프로그램을 실행시켰을 때 메모리에 올라가 운영체제로..
철학자에 손도 안 댄지 어연 한달째... 다시 재개해보고자 한다... I've never thought philosophy would be so deadly. 굶어죽는 철학자 주의사항 무지성으로 코딩했다가 후회할 것이다 스레드와 뮤텍스 (필수파트), 프로세스와 세마포어 (보너스파트) 를 많이 공부하도록 하자 철학자가 죽는 것을 어떻게 알아채야 할까? 철학자 감시 스레드를 하나 만들어서 main 스레드로부터 join하기 철학자 감시 스레드 하위에 철학자들을 생성하고 detach한 후, philo_setting 구조체 내부의 if_dead 계속 감시하기 이 방식을 사용하면 철학자 감시 스레드와 철학자 스레드들이 같이 돌기 때문에 누가 죽는지 파악이 가능 사전에 공부해야 할 내용 Mandatory 프로세스와 ..
윤년 문제 연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다. 1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다. 입력 첫째 줄에 연도가 주어진다. 연도는 1보다 크거나 같고, 4000보다 작거나 같은 자연수이다. 출력 첫째 줄에 윤년이면 1, 아니면 0을 출력한다. 풀이 #include int main(void) { int n; scanf("%d", &n); if ((n % 4 == 0 && n % 100 != 0) || n % 4..