2019-2020-1 20175310 "정보 보안 시스템 설계 기준"학습 요약의 아홉 번째 주

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의 이해를 깊이"
리눅스 시스템 호출을 학습의 독창적 인 방법

추천

출처www.cnblogs.com/xicyannn/p/11924406.html