리눅스 운영 체제에서 "task"와 "process"는 종종 상호 교환적으로 사용되는 용어입니다. 하지만, 이들 간에는 미묘한 차이가 있으며, 이 차이는 리눅스의 내부 구현과 스케줄링 방식을 이해하는 데 중요합니다. Process 정의: 프로세스는 실행 중인 프로그램의 인스턴스입니다. 운영 체제에서 프로세스는 자체적인 주소 공간, 코드, 데이터 및 시스템 리소스를 가집니다. 프로세스는 하나 이상의 스레드를 포함할 수 있으며, 각 스레드는 프로세스 내에서 실행되는 실행의 단위입니다. 특징: 프로세스는 고유한 프로세스 식별자(PID)를 가지며, 시스템 리소스(예: 파일 핸들, 네트워크 연결 등)와 메모리(데이터 세그먼트, 코드 세그먼트, 스택 등)를 할당받습니다. 관리: 리눅스 커널은 프로세스 생성, 실행,..
fork()와 exec()는 UNIX 및 유닉스 계열 운영 체제(예: 리눅스)에서 프로세스를 생성하고 관리하는 데 사용되는 두 가지 중요한 시스템 호출입니다. 이들은 프로세스의 생성 및 실행에 있어 서로 보완적인 역할을 하지만, 각각의 목적과 작동 방식에는 분명한 차이가 있습니다. fork() 목적: fork() 시스템 호출은 호출한 프로세스(부모 프로세스)의 정확한 복사본을 생성하는 데 사용됩니다. 이 복사본을 자식 프로세스라고 합니다. 자식 프로세스는 부모 프로세스와 거의 동일한 메모리 이미지, 환경 변수, 파일 디스크립터 등을 가지지만, 프로세스 식별자(PID)는 다릅니다. 작동 방식: fork()는 새로운 프로세스를 생성한 후, 부모 프로세스와 자식 프로세스에서 각각 다른 값을 반환합니다. 부모 ..
Segmentation fault와 Page fault는 컴퓨터 운영 체제에서 발생하는 두 가지 다른 종류의 오류입니다. 각각의 차이점을 이해하기 위해서는, 먼저 각 용어의 의미를 알아야 합니다. Segmentation Fault 정의: Segmentation fault는 프로그램이 잘못된 메모리 영역에 접근하려고 할 때 발생하는 오류입니다. 이는 주로 프로그램이 할당되지 않은 메모리를 읽거나 쓰려고 할 때, 또는 접근 권한이 없는 메모리 영역에 접근하려고 할 때 발생합니다. 원인: 주로 포인터 오류, 배열의 경계를 벗어난 접근, 참조된 메모리의 해제 후 접근 등 프로그래머의 실수로 인해 발생합니다. 결과: 프로그램이 비정상적으로 종료됩니다. Page Fault 정의: Page fault는 프로세스가 현..
GCD와 NSOperationQueue의 차이 * GCD는 동시에 실행하려는 작업 단위를 대표 할 수있는 경량의 방법이다. 해당 작업 단위는 개발자가 직접 스케줄하지 않고 시스템이 스케줄 관리를 해준다. 블럭들 사이에서 의존성을 부여하는 것은 쉽지 않은 일이며, 작업 취소 혹은 일시정시 같은 일을 하기 위해서는 각 개발자가 개인별로 추가해야한다.* NSOperation과 NSOperationQueue는 GCD에 비해 추가적인 기능을 제공하며 여러 operation에 의존성을 부여할 수도 있다. 뿐만 아니라 재사용도 가능하며 취소 혹은 일시정지와 같은 기능도 가능하다. NSOperation은 KVO 기술을 완벽하게 사용할 수 있다. 그래서 NSOperation이 실행되기 시작하면 NSNotification..
- Total
- Today
- Yesterday