2019-2020-1 20175310 "정보 보안 시스템 설계 기준"학습 요약의 아홉 번째 주
멀티 스레딩
유니버셜 기능
void * func( void * parameter)
typedef void* (*uf)(void * para)
인터페이스
- 어떤 모듈을 표시 할
- 식별자, 유형, 기능 등
- * .H
- 함수 호출
실현
- 인터페이스 모듈의 완료를 표시하는 방법
- 하나 이상의 인터페이스 (가능)
- *.기음
- 기능 구현
함수 서명 (함수 서명)
- 함수 이름, 매개 변수의 수, 매개 변수 유형
- 반환 값이 포함되어 있지 않습니다
- 같은 사람의 서명과 같은 다른 기능을 식별하는 기능 서명은 다른를 식별하는 데 사용
멀티 스레딩
단일 스레드
복잡
- 프로그램 수준의 동시성 - 처리
- 기능 수준의 동시 - 스레드
sayhello1.c
#include <stdio.h>
#define NUM 5
void print_msg(char *m)
{
int i;
for (i=0;i<NUM;i++){
printf("%s",m);
fflush(stdout);
sleep(1);
}
}
int main(){
print_msg("hello");
print_msg("world\n");
}
멀티 스레딩
종료
- 전체 프로세스를 종료하지 않고 스레드를 종료
- 스레드 함수에서
return
- 하는 전화
pthread_cancel
동일한 프로세스에서 다른 스레드를 종료 - 통화
pthread_exit
종료 소유
pthread_join을 최종 상태를 얻을 :
- 는 IF
thread
관통 나사return
복귀value_ptr
유닛 (A)의 저장을 위해 의도되는thread
기능 스레드의 반환 값 - 경우
thread
스레드가 다른 스레드에 의해 호출pthread_cancel
비정상적으로 떨어져 종료value_ptr
단위 가게에서 가리키는 것은 일정PTHREAD_CANCELED
- 경우
thread
스레드가 자신의 통화pthread_exit
종료,value_ptr
저장 부에 지적이 전달됩니다pthread_exit
매개 변수
중요한 자원
- 자원의 하나의 프로세스 (스레드) 사용을 허용
프린터, 변수 데이터 등
독점적 인
- 간접 제약 관계
프로세스가 중요한 자원을 사용하여 중요한 지역을 입력하면 직업 중요한 자원 프로세스가 중요한 영역을 종료 할 때, 다른 프로세스 (스레드) 기다려야합니다, 다른 프로세스는이 중요한 리소스에 액세스 할 수 있습니다.
동기
- 직접 관계를 제한
특정 작업 및 2 개 이상의 프로세스 (스레드)를 설립하기 때문에 소정 위치에서 자신의 작업 순서를 조정하고 생성 된 전송 제한 관계 정보를 기다릴 필요가 이러한 프로세스 (스레드)을 수행한다.
뮤텍스Mutex,Mutual Exclusive Lock
- 작업이 잠금 및 다음 다른 스레드를 해제 스레드는 잠금이 "- - 수정 쓰기 읽기", 수행 할 수 있습니다 획득
- 스레드 잠금은 기다릴 수하지 않고 공유 데이터에 액세스 할 수 없습니다
- "읽기 - 수정 - 쓰기"세 개의 동작으로 이루어진 원자 동작을 실행하거나 혹은 실행하지은 실행이 중간 정지하지 않고,이 동작은 다른 프로세서에서 병렬로 수행되지
Mutex
저자pthread_mutex_t
변수의 타입을 나타내는
스레드 및 프로세스
기능 | 방법 | 실 |
---|---|---|
만들기 | 포크 | 는 pthread_create |
대기 | 대기 / waitpid를 | pthread_join을 |
종료 | 출구 / _exit | 는 pthread_exit |
신분증 | GETPID / getppid | pthread_self |
독점적 인 | 신호기 | 뮤텍스 / 세마포어 |
동기 | 신호기 | 콘드 VAR / 세마포어 |
디버깅 코드의 문제점
- 문제가 하나 발생했습니다 멀티 스레드 코드 오류를 실행하는 경우
对‘pthread_create’未定义的引用
对‘pthread_join’未定义的引用
해결 방법 : 컴파일시에 매개 변수를 추가
-lpthread
거기에
- 문제는 2가 발생했습니다 :
해결 방법 :
ls -l test_drv_load
시스템과 일부 그룹, 다음 스크립트에서 그룹 이름이 변경되었습니다, 일부 그룹의 시스템을 볼 수 있습니다.
학습 요약
- 너무 많은 실험 2 주 때문에, 가을의 많은 블로그를 쓸 수있다
- 수업 시간에 의한 클래스의 일부는 테스트를 완료, 또한 연구에 방과 후 시간을 할애하기
- 아직도 가을의 교육 과정 만들기 위해 더 많은 시간을 할애해야합니다 한 번 심각하게 연구 할 필요가
코드 호스팅
참고 자료
교재 소개 및 주간 검사를 집중
학습 가이드 "컴퓨터 시스템 V2의 이해를 깊이"
리눅스 시스템 호출을 학습의 독창적 인 방법