>  기사  >  운영 체제 인터뷰 고주파 테스트 포인트

운영 체제 인터뷰 고주파 테스트 포인트

嵌入式Linux充电站
嵌入式Linux充电站앞으로
2023-07-31 16:23:071267검색
운영 체제 인터뷰 고주파 테스트 포인트

1. 프로세스와 스레드의 차이점

  • 프로세스는 자원 할당의 최소 단위이고, 스레드는 CPU 스케줄링의 기본 단위입니다.
  • 프로세스는 독립적인 주소 공간을 가지며, 스레드는 독립적인 주소 공간을 갖지 않지만 독립적인 스택과 지역 변수를 가지고 있습니다.
  • 멀티 프로세스 및 멀티 스레드에서는 멀티 프로세스가 멀티 스레드보다 강력합니다. 프로세스는 독립적인 주소 공간을 갖고 있기 때문에 프로세스가 비정상적으로 종료되더라도 다른 프로세스에 영향을 미치지 않으며, 스레드는 독립적인 주소 공간을 갖지 않으며, 스레드가 비정상적으로 종료되면 다른 스레드에 영향을 줄 수 있습니다.
  • 프로세스 생성 비용은 스레드 생성 비용보다 큽니다. 프로세스 컨텍스트 전환 비용은 스레드 컨텍스트 전환 비용보다 큽니다.

2. 프로세스 간 통신 방법은 무엇인가요?

  • Pipeline: (1) 익명 파이프: 바이트 스트림 형식으로 선호도가 있는 프로세스 간 통신에 사용됩니다. (2) 유명한 파이프: 낭만적인 관계의 경계를 허물고 관련되지 않은 두 프로세스가 바이트 스트림 형태의 파이프를 통해 통신할 수 있도록 합니다.
  • Message Queue: 데이터는 블록 단위로 전송되지만 사용자 공간에서 커널 공간으로 데이터를 복사하는 데 비용이 많이 듭니다.
  • 공유 메모리: 리소스 경쟁 문제가 있습니다
  • Signal: 비동기 통신
  • 세마포: 동기식 상호 배제
  • 소켓 communications: 두 개의 컴퓨터실 구현 의사소통.

3. 프로세스 스케줄링 알고리즘

  • 큐에 합류한 순서에 따라 프로세스를 하나씩 실행
  • 알고리즘; 실행 시간이 가장 짧은 프로세스의 우선순위를 지정합니다
  • 응답률이 높은 우선순위 스케줄링 알고리즘 프로세스를 스케줄링할 때 먼저 응답률 우선순위를 계산한 다음 응답률 우선순위가 가장 높은 프로세스를 선택합니다. run
  • 타임 슬라이스 라운드 로빈 스케줄링 알고리즘; 각 프로세스가 실행될 수 있는 시간은 동일하며, 프로세스는 타임 슬라이스
  • 최고 우선순위 스케줄링 알고리즘에 따라 차례로 실행됩니다. 가장 높은 우선순위
  • 다단계 피드백 대기열 스케줄링 알고리즘 대기열 우선순위가 높은 것에서 낮은 것, 시간 조각이 작은 것부터 큰 것까지

4. 고아 프로세스란

(1) 부모 프로세스가 자식 프로세스보다 먼저 종료됩니다. 이때 자식 프로세스는 고아 프로세스가 됩니다.

(2) Linux 시스템 규정: 모든 고아 프로세스는 특수 프로세스(프로세스 1, init 프로세스)의 하위 프로세스가 됩니다.

5. 다중 스레드 동기화 메커니즘은 무엇입니까?

  • 6. 프로세스 메모리 파티션에 대한 간략한 설명
  • 커널 공간
  • 스택 영역
  • : 로컬 변수, 함수 매개변수 값 등을 저장하며, 운영 체제에 의해 제어되는 영역

동적 라이브러리/공유 메모리 매핑 영역: 실행 프로그램이 의존하는 동적 라이브러리는 이 영역에 로드됩니다. mmap에 의해 매핑된 공유 메모리도 이 영역에 있습니다

Heap 영역운영 체제 인터뷰 고주파 테스트 포인트: 이 메모리에서 Malloc/free 및 new/delete가 스스로 작동할 수 있는 메모리 영역이 제공됩니다.
    읽고 쓸 수 있는 데이터 영역
  • :

(1).bss 섹션: 초기화되지 않은 전역 변수와 0으로 초기화된 정적 변수를 저장합니다. .bss段:存储未初始化的、初始化为0的全局变量和静态变量。

(2).data

(2).data 섹션: 0으로 초기화되지 않은 전역 변수, 정적 변수, const 상수를 저장합니다.
  • 읽기 전용 데이터 영역
    : 바이너리 코드, 일부 const 수정 변수, 문자열 상수 등을 저장합니다.

7. 메모리 조각화

  • 메모리 조각화를 생성하는 방법

프로그래머는 프로그램에서 malloc을 사용하여 가상 메모리의 힙 공간에서 메모리를 동적으로 적용하고, 메모리를 해제하려면 free를 사용합니다. 프로그램이 대량의 malloc/free 작업을 수행하고 오랫동안 실행되면 가상 메모리의 힙 공간이 쉽게 메모리 조각화를 생성할 수 있습니다
  • 메모리 조각화란 무엇입니까? 힙 공간 메모리에 있지만 malloc의 할당 요청을 충족할 수 없습니다. 메모리 단편화는 외부 단편화와 내부 단편화로 나누어진다. 다음 그림은 힙 공간의 일부에 대한 메모리 할당을 설명합니다. 힙 공간은 4바이트 단위로 여러 할당 블록으로 구분됩니다. 흰색 블록은 사용 가능한 메모리를 나타내고 연한 파란색과 진한 파란색 블록은 할당된 메모리를 나타냅니다. 메모리 할당의 최소 단위가 할당 블록(4바이트)이라고 가정합니다.
    1. 외부 단편화: 힙 공간에 4개의 연속 할당 블록 크기의 여유 메모리(흰색 블록)가 없으므로 4개의 할당 블록 크기보다 작은 개별 여유 메모리가 많이 있습니다. 따라서 16바이트에 대해 malloc(16)을 적용하면 할당이 실패하게 됩니다. 그 이유는 4개의 연속 할당 블록에 대해서는 여유 메모리가 없지만 4개 미만의 할당 블록에 대해서는 여유 메모리가 있기 때문입니다
      .
    2. internal Fragmentation: 할당된 메모리의 최소 단위는 할당 블록(4바이트)이므로, malloc(5)이 5바이트에 적용되면 힙 공간에는 총 8바이트의 여유 블록 2개가 할당되지만 프로그램은 5바이트가 필요하고 나머지 3바이트(짙은 파란색)는 사용되지 않습니다. 이 3바이트의 메모리를 내부 조각화라고 합니다.
    운영 체제 인터뷰 고주파 테스트 포인트

    8. 힙과 스택의 차이점은 무엇인가요?

    • 다양한 할당 방법

    스택: 시스템에 의해 자동 할당

    힙: 프로그래머가 수동으로 적용

    • 애플리케이션 크기가 다릅니다

    스택: 메모리 크기 요청된 메모리가 스택 영역에 남아 있는 메모리보다 작으면 할당이 성공할 수 있습니다. 그렇지 않으면 스택이 오버플로됩니다.

    힙: 힙 영역의 메모리 크기는 컴퓨터의 가상 메모리에 따라 결정됩니다.

    9. 뮤텍스 잠금과 세마포어의 차이점

    (1) 세마포어는 스레드 동기화에 사용되고, 뮤텍스 잠금은 스레드 상호 배제에 사용됩니다.

    (2) 세마포는 음수가 아닌 정수일 수 있으며, 이는 여러 유사한 리소스의 다중 스레드 동기화를 실현할 수 있습니다. 뮤텍스는 0/1만 가능하며, 이는 하나의 리소스에 대한 상호 배타적 액세스에만 사용할 수 있습니다.

    (3) 세마포어는 한 스레드에서 해제되고 다른 스레드에서 얻을 수 있습니다. 뮤텍스의 잠금 및 잠금 해제는 각각 동일한 스레드에서 사용해야 하며 여러 스레드는 여러 뮤텍스를 사용할 때 통일된 순서에 주의해야 합니다. 그렇지 않으면 교착 상태가 발생할 수 있습니다.

    10 동기화와 비동기의 차이점

    • Synchronization: A가 B를 호출하고 A가 실행을 계속하려면 처리가 완료된 후 B가 반환될 때까지 기다려야 합니다
    • Asynchronous: A가 B를 호출하면 B가 처리를 마칠 때까지 기다릴 필요가 없으며 A는 계속 실행할 수 있으며 B가 처리를 마친 후에 콜백 등을 통해 A에게 알립니다.

    11. 교착상태야? 교착상태의 원인은 무엇입니까?

    (1) 교착 상태는 외부 힘이 없으면 여러 프로세스가 리소스를 놓고 경쟁하여 발생하는 교착 상태(서로를 기다리는 상태)를 말합니다. (2) 이유: ①

    시스템 리소스가 부족합니다. ② 자원의 부적절한 배분. ③프로세스 진행 순서가 부적절합니다

    .

    교착상태에 필요한 네 가지 조건은 무엇인가요?

    (1)상호 배제 조건: 리소스는 한 번에 하나의 프로세스에서만 사용할 수 있고 다른 프로세스는 대기만 할 수 있습니다.

    (2)요청 및 보류 조건: 프로세스가 하나 이상의 리소스를 획득했지만 새로운 리소스를 요청했으며 해당 리소스는 이미 다른 프로세스에 의해 점유되어 있습니다. 획득한 자원이 아직 보류 중입니다.

    (3)탈취 불가능한 조건: 프로세스에서 얻은 리소스는 다른 프로세스에서 박탈할 수 없으며 자체적으로만 해제될 수 있습니다.

    (4) 순환 대기 조건: 여러 프로세스가 자원을 끝까지 순환 대기하는 관계를 형성합니다.

    참고: 위의 네 가지 조건은 필수입니다.

    교착 상태를 처리하는 방법은 무엇입니까?

    (1) 교착 상태 방지: 몇 가지 제한 사항을 설정하여 교착 상태에 필요한 조건을 파괴합니다.

    (2) 교착 상태 방지: 자원 할당 과정에서 시스템이 안전하지 않은 상태로 들어가는 것을 방지하는 방법을 사용하여 교착 상태를 방지합니다.

    (3) 교착 상태 감지 및 제거: 교착 상태가 발생하도록 허용하지만 시스템 감지를 통과한 후 교착 상태를 해결하기 위한 몇 가지 조치를 취합니다.

    교착상태를 방지하는 방법은 무엇인가요?

    (1)깨진 "요청 및 보류 조건":

    ①정적 할당, 즉 각 프로세스는 실행을 시작할 때 필요한 모든 리소스에 적용됩니다.

    ②동적 할당, 즉 각 프로세스는 필요한 리소스에 적용할 때 시스템 리소스를 점유하지 않습니다.

    (2)"양도할 수 없는 조건" 파괴: 프로세스의 차단 및 대기 기간 동안 해당 프로세스가 점유하고 있는 리소스는 암시적으로 해제된 다음 다른 프로세스에서 사용되며, 차단되고 대기 중인 리소스는 필요한 모든 리소스를 얻은 후에만 다시 시작할 수 있습니다. 자원.

    (3)"순환 대기 조건" 파괴: 자원을 순서대로 할당하고 모든 자원에 번호를 매깁니다. 희소한 자원은 더 큰 숫자를 사용합니다. 프로세스는 더 작은 자원을 획득하는 경우에만 더 큰 숫자를 신청할 수 있습니다. 번호가 매겨진 리소스

위 내용은 운영 체제 인터뷰 고주파 테스트 포인트의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 嵌入式Linux充电站에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제