여러 개의 사용자 모드 스레드를 생성 한 실행중인 프로세스가 있습니다. 커널이 프로세스 상태를 TASK_UNINTERRUPTIBLE
(또는 TASK_INTERRUPTIBLE
)으로 변경하면 프로세스에서 생성 된 스레드가 자동으로 일시 중단됩니까?TASK_UNINTERRUPTIBLE 및 C 커널을 사용하여 Linux 커널 개발 스레드 처리
이것은 숙제 문제가 아닙니다. 세마포어 구현 방법을 설명하는 운영 체제 책을 읽었습니다. 구현시 세마포어 구조체는 현재 세마포어를 기다리고있는 프로세스의 링크 된 목록을 유지 관리합니다. 지금까지 배운 것을 보면, 그러한 세마포어는 스레드가 아닌 프로세스를 동기화하는 데에만 사용될 수 있습니다. 옳은? 연결된 목록의 스레드는 세마포어를 사용할 수있을 때까지 TASK_INTERRUPTIBLE
상태가됩니다.이 상태에서 하나의 프로세스가 상태를 TASK_RUNNING
으로 설정하여 깨우면됩니다.
이제는 의미가 있습니다. 이 책의 구현에서 링크 된 프로세스 목록은 프로세스와 스레드를 설명하는 task_struct의 연결된 목록 일 것입니다. 나는 그들이 그것을 더 분명하게 만들었 으면 좋겠다. 감사. –