[OS] User-level 쓰레드 VS 커널 쓰레드, Go Language
커널/유저 레벨 쓰레드 쓰레드는 누가 생성하고 관리할까? OS(커널)에서 시스템 콜을 통해 쓰레드를 생성하고 관리한다. pthreads도 OS가 관리하는 쓰레드이다. 유저 레벨 프로세스에서 라이브러리를 통해 쓰레드를 관리할 수 있다. 어떤 쓰레드가 더 좋을까? 예를 들어서 생각해 보자. 팩토리얼을 재귀로 구현하면 함수가 계속 불리고, 함수를 시작하고 끝내기 위해 그만큼 어셈블리어 코드가 몇 줄씩 들어가게 된다. 따라서 성능적인 측면에서 반복문을 사용하는 방식이 좋다. 또, local function으로 myswap() 같은 걸 만들 수 있다. 또 library function으로 strcpy() 같은 것도 있고, system call에도 getpid() 같은 게 있다. 만약 세 함수가 모두 같은 역할을 ..
2024.04.12