Linux 7

[Linux] 프로세스 스케쥴링

오늘 Linux CFS를 보면서 관련된 내용이 있어 아래 정리한다. 프로세스 스케쥴링 종류에는 주로 두 가지가 있다. Preemtive Scheduling (선점형 스케쥴링)- 스케쥴러가 강제로 CPU를 뺏어서 다른 프로세스에게 할당하는 방식이다. - Linux CFS (Completely Fair Scheduler)- 현대 OS에서는 대부분 선점형을 쓴다고 보면 된다. Non-Preemtive Scheduling (비선점형 스케쥴링)- 프로세스가 양보해야만 다른 프로세스에게 CPU가 할당되는 방식이다. (coorporative 협력 기반 방식이라고도 불린다)- cooporative라고 불리는 이유는 CPU턴을 잡은 프로세스가 다른 프로세스에게 양보(yield)해야만 다른 프로세스에게 CPU턴이 가..

Linux 2026.01.17

[Linux] Daemon Process의 명칭과 발음

흔히들 데몬 프로세스라고들 많이 부른다. 영어 표기로는 daemon이고 이건 그리스 신화에 나오는 신성한 존재를 의미한다. 그리고 헷갈리는 demon은 크리스트교에서 나오는 우리가 흔히 알고 있는 "마귀", "악마"다. 그런데 Background에서 돌아간다는 의미에서는 daemon이 맞는 의미다. 그러므로 개인적으로는 데몬 프로세스가 아니라 데이먼(Daemon) 프로세스 or 데이몬(Daemon) 프로세스라고 부르는 게 좀 더 올바르다는 생각이 든다. 헷갈림을 방지하기 위함이고 정통 의미대로 보자면 이게 맞는 듯 싶다. 그런데 daemon process 자체는 멕스웰의 사고 실험인 멕스웰 도깨비(Maxwell's demon)에서 비롯되었다면서 왜 demon이 아니라 daemon process가 맞는..

Linux 2026.01.17

[Linux] Oracle VirtualBox 사용중 Cannot enable nested VT-x/AMD-V 에러 발생

오라클 VB 박스를 사용 중에 새롭게 우분투 환경을 만들어주려고 하고 있었다. 그런데 시스템 설정에서 nested VT-x/AMD-v 라는 옵션을 켜야 하는데 아예 체크하는 옵션 자체가 비활성화가 되있었다. 클릭도 안된다. (위 사진은 ) 지금은 내가 해결한 상태라 네스티드 VT-x/AMD-V 사용하기(V) 가 체크가 된 상황이지만 문제가 발생한 시점에는 아예 비활성화가 되있어서 클릭이 되지 않았다. 참고로 원래 이 메뉴를 체크할 수 있으려면 바로 위의 항목인 PAE/NX 사용하기를 체크하고 나서 네스티드 메뉴도 같이 체크할 수 있어야만 한다. 그래서 여기서 문제점이 발생했고 강제로 터미널에서 이 옵션을 킬 수 있는 방법을 알아냈다. 우선 VirtualBox 가 설치된 폴더로 터미널 상에서 이동해보자. ..

Linux 2022.03.14

[Linux] 우분투에서 비어있지 않은 폴더 삭제하기 - Directory not empty

폴더를 삭제하려고 하는데 Directory not empty 가 발생했다. 지우려는 폴더 안에 뭔가 여러개가 들어있단 소리다. 폴더든 파일이든 뭐가 있다는 소리다. 안이 비지 않아서 삭제 못한다고 하는데 이럴때는 sudo rm -r [폴더이름] 이렇게 작성해주면 삭제할 수 있다. (참고로 -r 의 r은 recursive의 의미이다. 깊게 돌면서 들어가서 다 지워나가겠다는 거다. 아마 실제 구현도 디렉토리 트리 구조 내에서 recursive한 방식으로 순회하면서 뒤로 돌아나오면서 삭제하지 않을까 싶다. 어떻게 구현된지는 잘 모르겠지만 아마 실제 그렇게 구현해도 아무 문제 없이 동작할거다.) https://noosphere.tistory.com/90 [linux]비어있지 않은 폴더 지우는 방법 에러 rmdi..

Linux 2021.06.27

[Linux] 리눅스 gcc 에서 c언어 컴파일, 32비트 어셈블리 코드 확인하기

c언어를 컴파일 하는 과정에서 어셈블리 코드를 확인하는 과제가 있었는데 리눅스에서 컴파일했던 기억이 까마득해서 에러때문에 고생좀 했다. 우선 방법은 간단하다. 그냥 .c형식의 c소스코드를 작성해주고 gcc -O1 -S -m32 test.c 이렇게 적어주면 된다. -m32는 32비트 어셈블리를 확인하겠다는거고 -S는 어셈 코드를 보겠다는거고 -O1은 최적화 단계를 설정해주는 거다. 이것도 O이 숫자인줄 알고 계속 하다가 뭔가 생겨먹은게 이상해서 그제야 알아차린거다. 지금 생각해보면 웃기긴한데 심각하게 왜 안되는지 이리저리 애먹었다... ㅋㅋ 아마 Optimization이라는 뜻인걸까? 특히 c를 컴파일해줄때 bits/libc-header-start.h: No such file or directory 오류 ..

Linux 2021.05.20