뮤텍스와 세마포어에 대한 비교글이 많은데, 딱히 와닿지 않아서 3 step os를 보고 직접 정리해보았다. 조금 디테일한 내용은 있으나, 전반적인 사전지식을 위해 추가한것이므로 그렇게 깊게 다루진 않았다. 1. Mutex 뮤텍스는 기본적으로 상호배제(mutural exclusion) 를 위한 lock을 위해 고안된 아이디어이다. POISX 표준에 등록되어있어서 mutex라는 이름으로 널리 쓰이는것 같다. https://www.joinc.co.kr/w/man/3/pthread_mutex_init linux man page : pthread_mutex_init - mutex 를 초기화 한다. 뮤텍스(mutex)는 쓰레드가 공유하는 데이터 영역을 보호하기 위해서 사용되는 도구이다. pthread_mutex_i..
Swift나 Python같이비교적 고급언어들로 작성하다가, 과제를 위해 C언어로 오니 매우 불편한점이 있다.특히 메모리로 접근했을때, 예상치못한 오류들이 생긴다는점.. char* 배열의 값에서 에서 다른 char* 배열값에 값만 복사하려고하면 에러가났다. 처음 시도한 코드a[1] = b[1]; expected case : b[1]에 있는 값을 복사해서 a[1]로 옮겨라.actual case: b[1]에 있는 주소값을 복사해서 a[1]로 옮겨라. 처음에는 당연히 값이 잘 옮겨지겠지 라고 생각하고 프로그램을 실행해봤는데,어떤값이 계속 지워지는현상을 보았다.... 하나하나 프린트를 찍어보면서 디버깅을해보면서 알아낸것은" 값을 옮기는게아니라 주소를 옮기는거였구나.. " 따라서, 이럴때는 strcpy라는 C언어 ..
페이징 계산은 운영체제 공부 중 중요하게 다뤄지는 내용 중 하나이다. 따로 포스팅하여서 정리하도록한다. 1. 페이징이 무엇인가 페이징은 보통 메모리 스페이스를 잘게 나눠서 메모리에 저장하는 가상화 방식중 하나이다. 2. 페이징을 왜쓰는가 내가 저장하고싶은 메모리는 10KB인데, 남은자투리메모리공간은 4KB, 7KB라고해보자. [ 점거 | 4KB FREE공간 | 어떤프로세스가 점거 | 7KB FREE 공간 ] 그럼 10KB가 들어갈 자리가 없다. 그걸 방지하기위해서 나온 기술이 페이징기술. 프로세스 메모리 공간을 모두 일정한 페이징단위로 나눠서, 분배해주는방식이다. 그럼 사용자입장, 가상화부분에서는 페이지가 메모리에 순서대로 잘 정리되어있다고생각하고 예를들어 이렇게.. int a[] = {1,2,3,4,5..