목차
저자 한국어판 서문 ... ⅳ
역자 서문 ... ⅴ
들어가며 ... xii
01
   1장 임베디드, 실시간 시스템
      1.1 소개 ... 1
      1.2 임베디드 시스템은 무엇인가? ... 1
      1.3 임베디드 시스템의 특성 ... 2
      1.4 실시간 시스템 ... 3
      1.5 실시간 운영체제와 실시간 커널 ... 3
      1.6 프로세스, 태스크, 스레드 ... 4
      1.7 실시간 시스템의 구조 ... 5
      1.8 임베디드 시스템 개발 ... 7
02
   2장 RTOS를 사용한 시스템과의 첫 만남
      2.1 운영 환경 ... 9
      2.2 스레드X 데모 시스템 설치 ... 9
      2.3 2개의 스레드를 사용하는 예제 시스템 ... 9
      2.4 스레드X 객체 생성 ... 12
      2.5 예제시스템 컴파일과 실행 ... 14
      2.6 시스템과 출력결과 분석 ... 14
      2.7 02_sample_system.c 예제 ... 15
      2.8 생각해볼 문제 ... 20
03
   3장 RTOS 개념과 용어 정의
      3.1 고개 ... 21
      3.2 우선순위 ... 21
      3.3 준비 스레드와 중지 스레드 ... 22
      3.4 우선순위 기반 선점형 스케줄링 ... 23
      3.5 라운드 로빈 스케줄링 ... 24
      3.6 확정성 ... 25
      3.7 커널 ... 26
      3.8 RTOS ... 26
      3.9 문맥 전환 ... 26
      3.10 타임 슬라이드 ... 26
      3.11 인터럽트 처리 ... 27
      3.12 스레드 기아현상 ... 27
      3.13 우선순위 역전현상 ... 28
      3.14 우선순위 상속 ... 29
      3.15 선점 한계치 ... 29
      3.16 생각해볼 문제 ... 30
04
   4장 시스템 개발을 위한 RTOS 구성요소
      4.1 소개 ... 31
      4.2 공개 자원의 정의 ... 31
      4.3 스레드X 데이터 타입 ... 32
      4.4 스레드 ... 33
      4.5 메모리 풀 ... 34
      4.6 응용 프로그램 타이머 ... 36
      4.7 뮤텍스 ... 37
      4.8 카운팅 세마포어 ... 38
      4.9 이벤트 플래그 그룹 ... 38
      4.10 메시지 큐 ... 39
      4.11 스레드 동기화와 통신용 구성요소 요약 ... 40
      4.12 생각해볼 문제 ... 41
05
   5장 ARM 마이크로프로세서 소개
      5.1 소개 ... 43
      5.2 역사 ... 43
      5.3 기술적 특징 ... 44
        5.3.1 시스템 온 칩 호환성 ... 44
        5.3.2 낮은 전력 소모 ... 45
        5.3.3 향상된 코드 밀도 ... 45
        5.3.4 다용도 레지스터 집합 ... 46
        5.3.5 CPSR 정의 ... 48
        5.3.6 프로세서 모드 ... 48
      5.4 ARM 전력 절약 지원 ... 50
06
   6장 스레드의 핵심 구성요소
      6.1 소개 ... 51
      6.2 스레드 제어 블록 ... 51
      6.3 스레드 서비스 요약 ... 53
      6.4 스레드 생성 ... 53
      6.5 스레드 제거 ... 59
      6.6 스레드 식별 ... 60
      6.7 스레드 정보 얻기 ... 60
      6.8 선점 한계치 변경 ... 61
      6.9 우선순위 변경 ... 62
      6.10 제어 양도 ... 62
      6.11 스레드 실행 재개 ... 63
      6.12 스레드 수면 ... 63
      6.13 스레드 일시 중지 ... 63
      6.14 응용 프로그램 스레드 종료 ... 64
      6.15 타임 슬라이스 변경 ... 64
      6.16 스레드 일시 중지 중단 ... 65
      6.17 스레드 실행 개요 ... 66
      6.18 스레드 상태 ... 67
      6.19 스레드 설계 ... 68
        6.19.1 스레드 수를 최소화하라 ... 69
        6.19.2 우선순위를 주의깊게 선택하라 ... 69
        6.19.3 우선순위 수를 최소화하라 ... 69
        6.19.4 선점 한계치 사용을 고려하라 ... 70
        6.19.5 우선순위 상속을 고려하라 ... 70
        6.19.6 라운드 로빈 스케줄링 사용을 고려하라 ... 70
        6.19.7 타임 슬리이싱 사용을 고려하라 ... 71
      6.20 스레드 내부 ... 71
      6.21 요약 ... 73
      6.22 생각해볼 문제 ... 73
07
   7장 상호배제 문제와 고려사항
      7.1 소개 ... 75
      7.2 크리티컬 섹션 보호 ... 75
      7.3 공유 자원에 대한 독점적 접근 제공 ... 76
      7.4 뮤텍스 제어 블록 ... 77
      7.5 뮤텍스 서비스 요약 ... 77
      7.6 뮤텍스 생성 ... 78
      7.7 뮤텍스 제거 ... 79
      7.8 뮤텍스 소유권 얻기 ... 79
      7.9 뮤텍스 정보 얻기 ... 81
      7.10 뮤텍스 중지 목록에 우선순위 적용하기 ... 81
      7.11 뮤텍스 소유권 놓기 ... 82
      7.12 교착 상태 피하기 ... 83
      7.13 뮤텍스로 크리티컬 섹션을 보호하는 예 ... 84
      7.14 예제 시스템 출력 ... 91
      7.15 07_sample_system.c 예제 ... 92
      7.16 뮤텍스 내부 동작 ... 96
      7.17 요약 ... 97
      7.18 생각해볼 문제 ... 98
08
   8장 메모리 관리 - 바이트 풀과 블록 풀
      8.1 소개 ... 99
      8.2 메모리 바이트 풀 요약 ... 99
      8.3 메모리 바이트 풀 제어 블록 ... 101
      8.4 메모리 바이트 풀 사용에 따른 함정 ... 101
      8.5 바이트 풀 서비스 요약 ... 102
      8.6 메모리 바이트 풀 생성 ... 102
      8.7 메모리 바이트 풀에서 할당받기 ... 103
      8.8 메모리 바이트 풀 제거 ... 104
      8.9 메모리 바이트 풀 정보 얻기 ... 105
      8.10 메모리 바이트 풀 중지 목록에 우선순위 적용하기 ... 105
      8.11 바이트 풀에 메모리 돌려주기 ... 106
      8.12 메모리 바이트 풀 예제 - 스레드 스택 할당 ... 107
      8.13 메모리 바이트 풀 내부 ... 108
      8.14 메모리 블록 풀 요약 ... 110
      8.15 메모리 블록 풀 제어 블록 ... 111
      8.16 메모리 블록 풀 서비스 요약 ... 112
      8.17 메모리 블록 풀 생성 ... 112
      8.18 메모리 블록 할당 ... 113
      8.19 메모리 블록 풀 제거 ... 114
      8.20 메모리 블록 풀 정보 얻기 ... 115
      8.21 메모리 블록 풀 중지 목록에 우선순위 적용 ... 115
      8.22 메모리 블록 돌려주기 ... 116
      8.23 메모리 블록 풀 예제 - 스레드 스택 할당 ... 117
      8.24 메모리 블록 풀 내부 ... 118
      8.25 요약 및 비교 ... 119
      8.27 생각해볼 문제 ... 120
09
   9장 내부 시스템 클럭과 응용프로그램 타이머
      9.1 소개 ... 121
      9.2 내부 시스템 클럭 서비스 ... 122
      9.3 응용프로그램 타이머 제어 블록 ... 123
      9.4 응용프로그램 타이머 서비스 요약 ... 124
      9.5 응용프로그램 타이머 생성 ... 125
      9.6 응용프로그램 타이머 활성화 ... 126
      9.7 응용프로그램 타이머 변경 ... 127
      9.8 응용프로그램 타이머 비활성화 ... 128
      9.9 응용프로그램 타이머 제거 ... 128
      9.10 응용프로그램 타이머 정보얻기 ... 129
      9.11 타이머로 스레드 성능 측정하는 예제 시스템 ... 129
      9.12 09_sample_system.c 예제 ... 133
      9.13 응용프로그램 타이머 내부 ... 138
      9.14 요약 ... 139
      9.15 생각해볼 문제 ... 140
10
   10장 이벤트 알림과 카운팅 세마포어를 이용한 동기화
      10.1 소개 ... 141
      10.2 카운팅 세마포어 제어 블록 ... 142
      10.3 교착 상태 피하기 ... 143
      10.4 우선순위 역전현상 피하기 ... 143
      10.5 카운팅 세마포어 관련 서비스 요약 ... 144
      10.6 카운팅 세마포어 생성 ... 144
      10.7 카운팅 세마포어 제거 ... 145
      10.8 카운팅 세마포어 인스턴스 얻기 ... 146
      10.9 카운팅 세마포어 정보 얻기 ... 146
      10.10 카운팅 세마포어 중지 목록에 우선순위 적용 ... 147
      10.11 카운팅 세마포어 인스턴스 추가 ... 148
      10.12 카운팅 세마포어와 뮤텍스 비교 ... 148
      10.13 뮤텍스 대신 바이너리 세마포어를 사용하는 예제 시스템 ... 149
      10.14 10a_sample_system.c 예제 ... 152
      10.15 카운팅 세마포어를 사용하는 생산지 - 소비자 응용프로그램 예제 ... 157
      10.16 10b_sample_system.c 예제 ... 160
      10.17 카운팅 세마포어 내부 ... 165
      10.18 요약 ... 165
      10.19 생각해볼 문제 ... 166
11
   11장 이벤트 플래그 그룹으로 스레드 동기화하기
      11.1 소개 ... 167
      11.2 이벤트 플래그 그룹 제어 블록 ... 168
      11.3 이벤트 플래그 그룹 제어 서비스 요약 ... 169
      11.4 이벤트 플래그 그룹 생성 ... 169
      11.5 이벤트 플래그 그룹 제거 ... 170
      11.6 이벤트 플래그 그룹에서 플래그 얻기 ... 171
      11.7 이벤트 플래그 그룹 정보 얻기 ... 174
      11.8 이벤트 플래그 그룹 내 이벤트 플래그 세트하기 ... 175
      11.9 스레드 2개를 동기화하기 위해 이벤트 그룹을 쓰는 예제시스템 ... 178
      11.10 11_sample_system.c 예제 ... 181
      11.11 이벤트 플래그 그룹 내부 ... 186
      11.12 요약 ... 187
      11.13 생각해볼 문제 ... 187
12
   12장 메시지 큐를 통한 스레드간 통신
      12.1 소개 ... 189
      12.2 메시지 큐 제어 블록 ... 190
      12.3 메시지 큐 서비스 요약 ... 191
      12.4 메시지 큐 생성 ... 192
      12.5 메시지 큐에 메시지 발신 ... 193
      12.6 메시지 큐에서 메시지 수신 ... 194
      12.7 메시지 큐 제거 ... 194
      12.8 메시지 큐 내용 버리기 ... 195
      12.9 메시지 큐 선두로 메시지 송신 ... 196
      12.10 메시지 큐 정보 얻기 ... 196
      12.11 메시지 큐 중지 목록에 우선순위 적용 ... 197
      12.12 스레드간 통신에 메세지 큐를 사용하는 예제 시스템 ... 198
      12.13 12_sample_system.c 예제 ... 201
      12.14 메시지 큐 내부 ... 206
      12.15 요약 ... 207
      12.16 생각해볼 문제 ... 208
13
   13장 ARM 예외 처리
      13.1 소개 ... 209
      13.2 스레드X의 ARM 예외 처리 구현 ... 210
        13.2.1 리셋 벡터 초기화 ... 210
        13.2.2 스레드 스케줄링 ... 213
        13.2.3 스레드X 인터럽트 처리 ... 216
        13.2.4 내부 인터럽트 처리 ... 218
14
   14장 사례 연구 - 멀티스레드 시스템 설계
      14.1 소개 ... 221
      14.2 문제 정의 ... 223
      14.3 문제 분석 ... 225
      14.4 시스템 설계 ... 226
        14.4.1 스레드 설계 ... 226
        14.4.2 공개 자원 설계 ... 228
      14.5 구현 ... 231
      14.6 VAM 시스템 예제 ... 246
      14.7 요약 ... 254
Appendix
   부록
      부록 소개 ... 257
      A 메모리 블록 풀 서비스 ... 259
      B 메모리 바이트 풀 서비스 ... 268
      C 이벤트 플래그 그룹 서비스 ... 277
      D 인터럽트 제어 서비스 ... 285
      E 뮤텍스 서비스 ... 287
      F 메시지 큐 서비스 ... 295
      G 카운팅 세마포어 서비스 ... 307
      H 스레드 서비스 ... 315
      I 내부 시스템 클럭 서비스 ... 335
      J 응용프로그램 타이머 서비스 ... 338
      K 스레드X API ... 347
   찾아보기 ... 353
   부록CD 소개 ... 370
닫기