표제지
목차
ABSTRACT 10
제1장 서론 12
제2장 배경지식 및 관련연구 14
제1절 시그널 14
1. 시그널 정의 14
2. 시그널 특징 14
3. 시그널 전송 함수 15
4. 시그널 커널 이벤트 출력 함수 15
제2절 시그널 관리 커널 자료구조 16
1. 스레드 작업 정보 17
2. 스레드 개인 시그널 정보 17
3. 프로세스 공유 시그널 정보 18
제3절 관련 연구 18
제3장 운영체제 커널 레벨 시그널 처리 20
제1절 시그널 처리 과정 20
1. 시그널 송신 20
2. 시그널 확인 24
3. 수신 시그널 처리 26
제2절 시그널 처리 지연 문제 27
1. 시그널 처리 지연 확인 27
2. 시그널링 처리 지연 문제 정의 29
제4장 실시간 시그널링 향상 방안 제안 31
제1절 시그널링 처리 과정 수정 31
1. 시그널 확인 과정 수정 31
2. 시그널 송신 과정 수정 33
제2절 시그널 이벤트 관찰 실험 34
1. 실험 환경 34
2. 원본 커널 실험 결과 37
3. 시그널링 실시간성 향상 패치 커널의 결과 42
제5장 Case-Study: ARINC-653 45
제1절 ARINC-653 정의 45
제2절 시그널 이벤트 관찰 실험 47
1. 실험 환경 47
2. 실험 결과 49
제6장 결론 및 향후 계획 51
참고문헌 52
국문초록 53
〈표 2-1〉 표준 시그널 예시 14
〈표 2-2〉 단위별 시그널 전송 함수 종류 15
〈표 4-1〉 실험 시스템 환경 34
〈표 4-2〉 실험 프로그램 리눅스 스케줄링 속성 36
〈표 4-3〉 원본 커널, 메인 스레드 sleeping, 스케줄러 별 시그널 처리 횟수 38
〈표 4-4〉 원본 커널, 메인 스레드 sleeping, 스케줄러 별 시그널 처리 시간 38
〈표 4-5〉 원본 커널, 메인 스레드 busy-wait, 스케줄러 별 시그널 처리횟수 41
〈표 4-6〉 원본 커널, 메인 스레드 busy-wait, 스케줄러 별 시그널 처리시간 41
〈표 4-7〉 패치 커널, 메인 스레드 sleeping, 스케줄러 별 시그널 처리횟수 42
〈표 4-8〉 패치 커널, 메인 스레드 sleeping, 스케줄러 별 시그널 처리시간 43
〈표 4-9〉 패치 커널, 메인 스레드 busy-wait, 스케줄러 별 시그널 처리횟수 43
〈표 4-10〉 패치 커널, 메인 스레드 busy-wait, 스케줄러 별 시그널 처리시간 44
〈표 5-1〉 실험 시스템 환경 47
〈표 5-2〉 실험 프로그램 리눅스 스케줄링 속성 48
〈표 5-3〉 원본 커널, 시그널 처리횟수 49
〈표 5-4〉 원본 커널, 시그널 처리시간 49
〈표 5-5〉 패치 커널, 시그널 처리횟수 50
〈표 5-6〉 패치 커널, 시그널 처리시간 50
〈그림 2-1〉 signal_generate 이벤트 함수 출력 형식 15
〈그림 2-2〉 signal_deliver 이벤트 함수 출력 형식 16
〈그림 2-3〉 다중 스레드로 구현된 프로세스의 task_struct 구조체 구조도 17
〈그림 2-4〉 x86-64 thread_info 구조체의 flags 변수 비트별 작업 정의 17
〈그림 3-1〉 시그널 송신 과정 순서도 20
〈그림 3-2〉 __send_signal 함수 의사 코드 21
〈그림 3-3〉 프로세스 내 시그널 대기 정보 입력 후 구조체 구조도 21
〈그림 3-4〉 시그널 수신 스레드 선택 및 판단 과정 순서도 22
〈그림 3-5〉 수신 스레드 깨우기 과정 순서도 23
〈그림 3-6〉 시그널 송신 완료 후 task_struct 구조체 구조도 24
〈그림 3-7〉 CPU 아키텍처 별 시그널 확인 함수 구조도 25
〈그림 3-8〉 x86-64 아키텍처 스레드 정보 확인 과정 25
〈그림 3-9〉 exit_to_user_mode_loop 함수 의사 코드 26
〈그림 3-10〉 get_signal 의사코드, 시그널 처리 과정 26
〈그림 3-11〉 시그널 정상 전송 시 이벤트 출력 27
〈그림 3-12〉 시그널 지연 처리 혹은 미처리 이벤트 28
〈그림 3-13〉 수신 프로세스의 다른 스레드 시그널 수신 28
〈그림 3-14〉 시그널 확인 과정에서 발생하는 자료구조 의존성 29
〈그림 3-15〉 수신 프로세스의 시그널 확인 과정 시간 그래프 30
〈그림 4-1〉 수신 측 확인 과정 변경 의사코드 32
〈그림 4-2〉 송신과정 변경 순서도 33
〈그림 4-3〉 실험 프로그램 구조도 34
〈그림 4-4〉 응용 프로세스의 스레드 별 실행 코드 35
〈그림 4-5〉 시그널 처리 여부 판단 기준 36
〈그림 4-6〉 원본 커널, 메인 스레드 sleeping, 시그널 처리시간 누적 확률 분포 그래프 37
〈그림 4-7〉 시그널 처리 중 커널 내 스케줄링 큐 상황도 38
〈그림 4-8〉 원본 커널, 메인 스레드 busy-wait, 시그널 처리시간 누적 확률 분포 그래프 40
〈그림 4-9〉 패치 커널, 메인 스레드 sleeping, 시그널 처리시간 누적 확률 분포 그래프 42
〈그림 4-10〉 패치 커널, 메인 스레드 busy-wait, 시그널 처리시간 누적 확률 분포 그래프 43
〈그림 5-1〉 시간적 파티셔닝 시간 그래프 46
〈그림 5-2〉 ARINC-653 스케줄링 속성 48
〈그림 5-3〉 ARINC-653 Yolo v4 실행 제어 시그널 처리시간 누적 확률 분포 그래프 49