화 웨 이 기술 면

8116 단어
1. 이 진 트 리, 스 택, 이 진 트 리 의 정의
이들 의 특징 을 말 하면 될 것 같 습 니 다. 이 진 트 리 는 재 귀적 인 정의 입 니 다. 그 때 는 제대로 대답 하지 못 하고 면접 관 에 게 둘러싸 였 습 니 다.
2. 데이터 구 조 는 항상 큰 머리 이다. 정렬, 하 프 만 나무, 나무의 옮 겨 다 니 는 등 이지 만 그림 이 적 고 너무 복잡 한 것 같다.
3. 운영 체제: 프로 세 스 통신 메커니즘, 우선 순위 반전 이란 무엇 인가
3. 현장 프로 그래 밍: 문자열 반전, 정수 가 답장 인지 판단 합 니 다.현장 프로 그래 밍 은 제목 이 간단 하 다 면 프로그램의 효율 과 간결 성에 주의해 야 한다.또 많은 사람들 이 함께 면접 을 보 러 들 어가 면 머리 가 짧 아 지기 쉬 우 므 로 절차 가 너무 보기 싫 기 때문에 먼저 연습 을 하 는 것 이 필요 하 다.하지만 나 도 공 부 를 별로 하지 않 았 으 니 무시 당 하 는 것 은 당연 하 다.
프로 세 스 통신 방식:
프로 세 스 간 통신 은 서로 다른 프로 세 스 간 에 정 보 를 전파 하거나 교환 하 는 것 입 니 다. 그러면 서로 다른 프로 세 스 간 에 쌍방 이 접근 할 수 있 는 미디어 가 존재 합 니까?프로 세 스 의 사용자 공간 은 서로 독립 되 어 있 으 며, 일반적으로 서로 접근 할 수 없 으 며, 유일한 예 외 는 공유 메모리 영역 입 니 다.그러나 시스템 공간 은 '공공 장소' 이기 때문에 커 널 은 이런 조건 을 제공 할 수 있다.이것 이외에 그것 은 쌍방 이 모두 방문 할 수 있 는 외설 이다.이 의미 에서 두 프로 세 스 는 물론 디스크 에 있 는 일반 파일 을 통 해 정 보 를 교환 하거나 '레 지 스 트' 나 다른 데이터 베이스 에 있 는 표 항목 과 기록 을 통 해 정 보 를 교환 할 수 있 습 니 다.넓 은 의미 에서 이것 도 프로 세 스 간 통신 의 수단 이지 만 일반적으로 이것 을 '프로 세 스 간 통신' 이 라 고 부 르 지 않 는 다.통신 수단 의 효율 이 너무 낮 기 때문에 프로 세 스 간 통신 에 대한 요 구 는 어느 정도 실시 간 이 어야 한다.
1. Linux 다음 프로 세 스 간 통신 의 몇 가지 주요 수단 소개:
1. 파이프 (Pipe) 및 유명 파이프 (named pipe): 파 이 프 는 친연 관 계 를 가 진 프로 세 스 간 의 통신 에 사용 할 수 있 습 니 다. 유명 파 이 프 는 파이프 의 이름 이 없 는 제한 을 극복 하기 때문에 파이프 가 가지 고 있 는 기능 을 제외 하고 친연 관계 가 없 는 프로 세 스 간 의 통신 도 허용 합 니 다.
파 이 프 는 세 가 지 를 포함한다. 1) 일반 파이프 PIPE, 보통 한 가지 제한 이 있 는데 하 나 는 반 양 방향 으로 만 전송 할 수 있다.둘째, 부자 프로 세 스 간 에 만 사용 할 수 있 습 니 다. 2) 흐름 관 spipe: 첫 번 째 제한 을 제거 하고 양 방향 으로 전송 할 수 있 습 니 다. 3) 이름 파이프: namepipe, 두 번 째 제한 을 제거 하면 관련 이 없 는 많은 프로 세 스 사이 에서 통신 할 수 있다.
2. 신호 (Signal): 신 호 는 비교적 복잡 한 통신 방식 으로 프로 세 스 가 어떤 사건 이 발생 했 음 을 알 리 는 데 사 용 됩 니 다. 프로 세 스 간 통신 을 제외 하고 프로 세 스 는 프로 세 스 자체 에 신 호 를 보 낼 수 있 습 니 다.Linux 는 유 닉 스 초기 신호 의미 함수 sigal 을 지원 하 는 동시에 의미 가 Posix. 1 표준 에 부합 되 는 신호 함수 sigaction 도 지원 합 니 다 (실제로 이 함 수 는 BSD 를 바탕 으로 하 는 것 입 니 다. BSD 는 신뢰성 있 는 신호 체 제 를 실현 하기 위해 대외 인 터 페 이 스 를 통일 시 키 고 sigaction 함수 로 signal 함 수 를 다시 실현 합 니 다).
3. 메시지 (Message) 대기 열 (메시지 대기 열): 메시지 대기 열 은 메시지 의 링크 표 입 니 다. Posix 메시지 대기 열 systemV 메시지 대기 열 을 포함 합 니 다.충분 한 권한 이 있 는 프로 세 스 는 대기 열 에 메 시 지 를 추가 할 수 있 고, 읽 기 권한 이 부 여 된 프로 세 스 는 대기 열 에 있 는 메 시 지 를 읽 을 수 있 습 니 다.메시지 큐 는 신호 적재 정 보 량 이 적 고 파 이 프 는 형식 없 는 바이트 흐름 과 버퍼 크기 제한 등 단점 을 극복 했다.
4. 공유 메모리: 여러 프로 세 스 가 같은 메모리 공간 에 접근 할 수 있 도록 하 는 것 이 가장 빠 른 IPC 형식 입 니 다.다른 통신 메커니즘 의 운행 효율 이 비교적 낮 기 때문에 설 계 된 것 이다.종종 다른 통신 메커니즘, 예 를 들 어 신 호 량 과 결합 하여 사용 함으로써 프로 세 스 간 의 동기 화 와 상호 배척 에 도달한다.
5. 신 호 량 (semaphore): 주로 프로 세 스 간 및 같은 프로 세 스 의 서로 다른 스 레 드 간 의 동기 화 수단 으로 합 니 다.
6. 인터페이스 (Socket): 더 일반적인 프로 세 스 간 통신 체 제 는 서로 다른 기계 간 의 프로 세 스 간 통신 에 사용 할 수 있 습 니 다.처음에는 유 닉 스 시스템 의 BSD 분기 에 의 해 개발 되 었 으 나, 지금 은 일반적으로 다른 유 닉 스 시스템 에 이식 할 수 있다. 리 눅 스 와 System V 의 변종 은 모두 소켓 을 지원 한다.
관련 문제
FAQ1: 파이프 와 파일 설명자, 파일 포인터 의 관계?
답: 사실 파이프 의 사용 방법 은 파일 과 유사 하여 read, write, open 등 일반 IO 함 수 를 사용 할 수 있 습 니 다. 파이프 설명 자 는 파일 설명자 와 유사 합 니 다. 사실 파이프 에 사용 되 는 설명자, 파일 포인터 와 파일 설명 자 는 결국 시스템 의 SOCKET 설명자 로 전 환 됩 니 다. 시스템 커 널 에 있 는 SOCKET 설명자 의 제한 을 받 습 니 다. 본질 적 으로 LINUX 커 널 소스 코드 에서 파 이 프 는 빈 파일 을 통 해 이 루어 집 니 다.
FAQ2: 파이프 사용 방법?
답: 주로 다음 과 같은 몇 가지 방법 이 있다. 1) pipe, 파 이 프 를 만 들 고 파이프 설명자 2 개 를 되 돌려 줍 니 다. 보통 부자 프로 세 스 간 통신 에 사 용 됩 니 다. 2) popen, pclose: 이 방식 은 하나의 파이프 설명자 만 되 돌려 줍 니 다. 통신 의 다른 쪽 은 stdin or stdout 입 니 다.3)mkpipe: 이름 파이프, 많은 프로 세 스 사이 에서 상호작용 을 합 니 다.
FAQ3: 파이프 와 시스템 IPC 간 의 우열 비교?
답: 파이프: 장점 은 모든 유 닉 스 구현 이 지원 된다 는 것 이다. 또한 마지막 접근 파이프 의 프로 세 스 가 종료 되면 파이프 가 완전히 삭 제 됩 니 다.결함 은 파이프 가 단 방향 으로 만 전송 되 거나 부자 프로 세 스 사이 에 만 사용 되 는 것 입 니 다.
 시스템 IPC: 장점 은 기능 이 강하 고 관련 이 없 는 프로 세 스 간 에 통신 할 수 있다 는 것 이다. 결함 은 키워드 KEYT 는 커 널 표 지 를 사용 하여 커 널 자원 을 점용 하고 명시 적 으로 삭제 할 수 있 으 며 SOCKET 의 일부 체 제 를 사용 할 수 없습니다. 예 를 들 어 select, epoll 등 입 니 다.
FAQ 4: WINDOS 프로 세 스 간 통신 과 LINUX 프로 세 스 간 통신 의 관계?
답: 실제로 WINDOS 의 프로 세 스 통신 은 대부분 UNIX, WINDOS 의 클립보드, 파일 맵 등에 이 식 돼 UNIX 프로 세 스 통신 의 공유 저장 소 에서 그림 자 를 찾 을 수 있다.
FAQ5: 프로 세 스 간 통신 과 스 레 드 간 통신 간 의 관계? \
답: WINDOWS 가 실행 하 는 실 체 는 스 레 드 이기 때문에, 협의 적 인 프로 세 스 간 통신 은 서로 다른 프로 세 스 에 속 하 는 스 레 드 간 의 통신 을 말 합 니 다. 하나의 프로 세 스 간 의 스 레 드 동기 화 문 제 는 특수 한 프로 세 스 통신 으로 분류 할 수 있 습 니 다. 커 널 이 지원 하 는 시스템 호출 을 사용 하여 스 레 드 간 의 동기 화 를 유지 해 야 합 니 다. 일반적으로 사용 되 는 스 레 드 동기 화 방법 은 이벤트, Mutex, 신 호 량 Semaphore, 임계 구역 자원 등.
3. 프로 세 스 간 통신 의 각종 방식 효율 비교
유형
연결 없 음
믿 을 만하 다
흐름 제어
기록 하 다.
메시지 형식 우선 순위
일반 PIPE
N
Y
Y
 
N
흐름 PIPE
N
Y
Y
 
N
PIPE (FIFO)
N
Y
Y
 
N
메시지 큐
N
Y
Y
 
Y
신호 량
N
Y
Y
 
Y
공유 기억 장치
N
Y
Y
 
Y
UNIX 스 트림 SOCKET
N
Y
Y
 
N
UNIX 패 킷 SOCKET
Y
Y
N
 
N
주: 연결 없 음: 어떤 형태의 OPEN 을 호출 하지 않 아 도 메 시 지 를 보 낼 수 있 는 능력 을 말한다.
흐름 제어: 시스템 자원 이 부족 하거나 더 많은 메 시 지 를 받 지 못 하면 전송 프로 세 스 는 데이터 통 제 를 할 수 있 습 니 다.
우선 순위 반전:
                      ,           。  uC/OS            。              。               ,                ,             。                       ,         ,        。 uC/OS        。    ,                     。 
 
 
             ,            :
bool isHuiWen(unsigned int uiNum) { unsigned int temp = uiNum; unsigned int uiRevesNum = 0; while (temp > 0) {   uiRevesNum = uiRevesNum * 10 + temp%10;   temp /= 10; } return uiNum == uiRevesNum; }

    :http://blog.163.com/sunny_110119/blog/static/37068271201081085749260/



                  ,           4      :
   1   :                      ,   ,        。 

  2   :                     。 

  3   :                  。 

  4  :              ,           。
 
   (Critical Section) 

                         。                     。                ,                              ,                。        ,          ,                   。
           : EnterCriticalSection()      LeaveCriticalSection()      

   (Mutex) 
   
            ,                     ,          ,                             。                           ,                。         。                                ,                          。
  
                :
    CreateMutex()       
    OpenMutex()       
    ReleaseMutex()     
    WaitForMultipleObjects()        
 
   (Semaphores) 

                        ,                ,        PV    。                   。                  ,                       。  CreateSemaphore()                              。                     ,               ,           1,             0 ,          。           0                           ,            ,             。           ,         ReleaseSemaphore()            1。                         。 

  PV                 E.W.Dijkstra   。   S     ,S                      , S                     。 

   P      :
    (1)S 1;
    (2) S 1       ,       ;
    (3) S 1    ,                     ,        。 
  
  V       :
    (1)S 1;
    (2)        ,       ;
    (3)          ,                   ,                   。
  
                :
    CreateSemaphore()       
    OpenSemaphore()       
    ReleaseSemaphore()     
    WaitForSingleObject()     

   (Event) 
   
                          。                  。 

  : 

  1.               ,          ,             。              ,                                        。                  ,          。 

  2.    (Mutex),   (Semaphore),  (Event)                   ,               ,          ,                   ,          。      WaitForSingleObject          。 

  3.                    ,                    ,                           ,                        /            ,                     ,                。
    :http://wenku.baidu.com/view/b2e8586c1eb91a37f1115caf.html

좋은 웹페이지 즐겨찾기