안녕하세요? 허니데이즈입니다.



스레드 객체는 시분할 공유 CPU 실행 컨텍스트를 나타내는 컨텍스트이다. 스레드 객체는 I/O와 계산에 필요한 다른 객체에 메모리와 Handle을 제공하는 특정 프로세스 객체와 관련되어 있다.

 

 Lifetime은 어떻게 되나요?
스레드는 호출 zx_thread_create()에 의해 생성 되지만, zx_thread_start()나 zx_process_start() 호출 될때만 실행을 시작한다. 두 syscalls은 실행할 초기 루틴의 진입점을 인수로 받는다. 전달된 스레드 zx_process_start()는 프로세스에서 실행을 시작하는 첫 번째 스레드여야 한다. 다음과 같은 경우에 스레드가 실행을 종료한다.

1. zx_thread_exit() 호출 시
2. zx_vmar_unmap_handle_close_thread_exit() 호출 시
3. zx_futex_wake_handle_close_thread_exit() 호출 시
4. 부모 프로세스가 종료 될 때
5. zx_task_kill()가 스레드의 핸들로 호출 시
6. 처리기가 없거나 처리기가 스레드를 종료하기로 결정한 예외를 생성할 시
진입점 루틴에서 리턴되면 실행이 종료되지 않는다. 진입점의 마지막 동작은 zx_thread_exit() 위에서 언급한 _exit() 변형 중 하나를 호출해야 한다.

스레드에 대한 마지막 Handle를 닫아도 실행이 종료되지 않는다. 사용 가능한 Handle이 없는 스레드를 강제 종료 zx_object_get_child()하려면 스레드의 Handle을 얻는데 사용해야 한다. 하지만 실행중인 스레드를 종료하면 프로세스가 손상된 상태가 될 수 있기 때문에 이 방법은 사용하지 않는 것이 좋다.

퓨시아 스레드는 항상 분리된다. 즉, 정상적인 종료를 수행하는데 필요한 join() 작업은 없다 . 그러나 C11이나 POSIX와 같은 커널 위의 일부 런타임은 스레드가 결합되어야 할 수도 있다.

 

 SYSCALLS은 어떤것이 있나요?
thread_create - 프로세스 내에서 새로운 스레드 생성하기
thread_exit - 현재 스레드 종료하기
thread_read_state - 스레드로부터 레지스터 상태를 읽기
thread_start - 새로운 thread가 실행을 시작하기
thread_write_state - 스레드의 레지스터 상태 수정하기
task_resume - 일시 중지된 작업을 계속 실행하기
task_bind_exception_port - 태스크에 예외 포트를 연결하기
task_kill - 작업 실행 중지하기


출처: https://fuchsia.googlesource.com/zircon/+/master/docs/objects/thread.md


 

지르콘 커널에 대해 더 알고 싶으시다면 아래 목차에서 클릭! 

지르콘 커널이란?

Zircon

지르콘 커널 개발 환경 구축하기

Getting Started

지르콘 커널 개발에 기여하는 방법

Contributing Patches

지르콘 커널의 개념 알기

Concepts Overview

지르콘 커널 구성요소(Kernel Objects)는?

Kernel Objects

지르콘 커널에서 사용되는 프로세스(Process)란?

Process Objects

지르콘 커널에서 사용되는 쓰레드(Thread)란?

Thread Objects

지르콘 커널에서 사용되는 핸들(Handles)이란?

Handles

지르콘 커널의 시스템콜하는 방식은?

System Calls

지르콘 커널의 드라이버 개발 키트 사용하는 방법 - 장치 모델

Driver Development Kit

지르콘 커널의 드라이버 개발 키트 사용하는 방법 - 장치 프로토콜

지르콘 커널의 드라이버 개발 키트 사용하는 방법 - 지르콘 드라이버 개발

지르콘 커널의 드라이버 개발 키트 사용하는 방법 - 플랫폼 버스

지르콘 커널의 드라이버 개발 키트 사용하는 방법 - 장치 펌웨어

지르콘 커널을 시험하는 방법은?

Testing

지르콘 커널의 취약점은 무엇일까?

Hacking notes

지르콘 커널의 메모리와 자원 사용은 어떻게 할까?

Memory usage analysis tools

지르콘 커널과 LK(Little Kernel)의 관계는?

Relationship with LK

지르콘 커널을 위한 마이크로 벤츠마크는?

Micro-benchmarks


+ Recent posts