프로그래밍 언어로 어떻게 다중 처리를 수행 할 수 있습니까?

팬더 코더

간단한 운영 체제를 개발하려고합니다. 지금까지 내가 개발 한 모든 프로그램을 단일 프로세서에서 실행할 수 있습니다. 하지만 거의 모든 최신 시스템을 기반으로하는 멀티 프로세싱 시스템이라는 개념을 살펴 보았을 때 많은 의구심을 갖게되었습니다.

첫째, 멀티 프로세서 시스템에서 실행할 수있는 프로그램을 어떻게 만들 수 있습니까? 하드웨어 지향적입니까 아니면 프로그래머 특정입니까?

두 번째로 Java는 하나이지만 C는 아닌 다중 처리 시스템에서 도움이 될 수있는 병렬 프로그래밍 언어를 살펴 보았습니다. 그렇다면 C (Windows)로 개발 된 OS가 어떻게 멀티 프로세싱을 할 수 있을까요?

감사.

존 버거

당신 말이 맞습니다 : 전형적인 C 프로그램은 단일 프로세서입니다. 작성하는 명령문은 필요에 따라 루프 및 테스트에 따라 차례로 실행될 것으로 예상됩니다. 그러나 C에서 "지금이 함수를 실행하지 마십시오 : 새 스레드를 만들고이를 사용하여 실행하십시오!"라는 함수를 호출 할 수 있습니다.

int maxPlaces;
int piDigits;

void CalculatePi() {
   // write code to calculate pi to maxPlaces
      // Update piDigits as you go
} // CalculatePi()

int main() {
   maxPlaces = 2000000000;
// CalculatePi(); // OLD CODE: Don't do this! Instead, do...
   StartThread(CalculatePi);
   while (piDigits<=maxPlaces) {
       Print(piDigits);
   } // while
} // main()

내 (만들어진) 기능을 사용하지 않고 OLD CODE로이 코드를 실행 StartThread()하면 프로그램이 오랫동안 멈춘 후 완료되면 2000000000이라는 숫자가 출력됩니다.

하지만 내 함수 StartThread()는 OS에 함수에 대한 새 실행 스레드를 CalculatePi()만든 다음 즉시 반환 하도록 지시합니다 . main(), 값 piDigits이 커질수록 반복적으로 인쇄 할 수 있습니다 . 이제 두 개의 실행 스레드가 있습니다. 하나는 파이의 자릿수를 계산하고 다른 하나는 얼마나 멀리 있는지 출력합니다.

이 프로그램은 단일 프로세서로만 실행되는 모든 다중 스레드 OS에서 작동합니다. 이 경우 각 스레드는 다른 스레드로 교체되기 전에 약간의 프로세서 시간을 얻습니다. 컴퓨터에 여러 개의 프로세서가있는 경우 OS는 하나의 스레드를 다른 스레드에 제공 할 수 있습니다. 프로그램은 신경 쓰지 않거나 (보통) 알지 못합니다.

그러나 병렬 프로그래밍 언어는 이와 같이 새로운 실행 스레드를 명시 적으로 만들 필요가 없도록 작성되었습니다. 언어의 구문과 디자인은 작업을 동시에 실행할 수있는시기를 명확하게합니다. C는 그렇지 않지만 특수 함수 호출로 동시성을 활용할 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

프로그래밍 언어로 생성 된 JWT를 다른 프로그래밍 언어에서 사용할 수 있습니까?

분류에서Dev

SSAS 데이터베이스 / 큐브가 처리 중인지 프로그래밍 방식으로 어떻게 확인할 수 있습니까?

분류에서Dev

액션에서 다른 자바 프로그램 / 클래스를 어떻게 실행할 수 있습니까?

분류에서Dev

Android에서 입력을 기다리는 while 루프를 어떻게 프로그래밍 할 수 있습니까? (해결)

분류에서Dev

SeCreateGlobalPrivilege를 프로그래밍 방식으로 어떻게 설정할 수 있습니까?

분류에서Dev

2 차를 간단한 플랫 포머로 어떻게 프로그래밍 할 수 있습니까?

분류에서Dev

iPhone에서 glyphicon 요소를 프로그래밍 방식으로 어떻게 변경할 수 있습니까?

분류에서Dev

프로그래밍 방식으로 UIImageView의 높이를 어떻게 변경할 수 있습니까?

분류에서Dev

직렬 COM 포트 번호를 프로그래밍 방식으로 어떻게 변경할 수 있습니까?

분류에서Dev

어떻게 프로그래밍 방식으로 숫자 필드를 Graylog에 기록 할 수 있습니까?

분류에서Dev

유전자 프로그래밍에서 루프 구조를 어떻게 구현할 수 있습니까?

분류에서Dev

Django 템플릿 언어를 다른 언어로 어떻게 사용할 수 있습니까?

분류에서Dev

mutate에서 프로그래밍 방식으로 다항식 함수를 어떻게 사용할 수 있습니까?

분류에서Dev

C 프로그래밍에서 배열을 다른 배열에 어떻게 바인딩 할 수 있습니까?

분류에서Dev

Google Play 콘솔의 앱을 다른 프로그래밍 언어로 대체 할 수 있습니까?

분류에서Dev

나는 한 사람이 그의 프로필에서 한 리트 윗을 얻으려고 노력하고 있습니다. R 프로그래밍을 사용하여 어떻게이 작업을 수행 할 수 있습니까? 아래 읽기

분류에서Dev

이 동적 프로그래밍 문제를 어떻게 해결할 수 있습니까?

분류에서Dev

Fedora에서 C 코드를 어떻게 프로그래밍하고 디버깅 할 수 있습니까?

분류에서Dev

어셈블리 언어로 어떻게 해결할 수 있습니까?

분류에서Dev

프로그래밍 방식으로 레이아웃의 각 모서리에 대해 다른 반경을 어떻게 설정할 수 있습니까?

분류에서Dev

DLL을 다른 프로그래밍 언어와 함께 사용할 수 있습니까?

분류에서Dev

누구든지이 코드 조각의 프로그래밍 언어를 식별 할 수 있습니까?

분류에서Dev

C 프로그래밍 언어, 1 판, 연습 1-8 --- 화살표를 표시 할 수 없습니다.

분류에서Dev

파이썬 다중 처리를 사용하면 자식 프로세스가 다른 자식 프로세스를 어떻게 종료 할 수 있습니까?

분류에서Dev

유니버설 Windows에서 프로그래밍 방식으로 컨트롤의 열 또는 행 범위를 어떻게 설정할 수 있습니까?

분류에서Dev

내 파이썬 프로그램이 실행중인 노드를 어떻게 식별 할 수 있습니까?

분류에서Dev

ArrayList를 다른 Java 클래스로 어떻게 분리 할 수 있습니까?

분류에서Dev

깜박이는 상자가 있습니다. 그래디언트를 추가하거나 더 쉽게 프로그래밍 할 수 있습니까?

분류에서Dev

vala 프로그래밍 언어를 사용하여 다른 응용 프로그램이 전체 화면인지 최대화되었는지 감지하고 자체 프로그램을 일시 중단 할 수 있습니까?

Related 관련 기사

  1. 1

    프로그래밍 언어로 생성 된 JWT를 다른 프로그래밍 언어에서 사용할 수 있습니까?

  2. 2

    SSAS 데이터베이스 / 큐브가 처리 중인지 프로그래밍 방식으로 어떻게 확인할 수 있습니까?

  3. 3

    액션에서 다른 자바 프로그램 / 클래스를 어떻게 실행할 수 있습니까?

  4. 4

    Android에서 입력을 기다리는 while 루프를 어떻게 프로그래밍 할 수 있습니까? (해결)

  5. 5

    SeCreateGlobalPrivilege를 프로그래밍 방식으로 어떻게 설정할 수 있습니까?

  6. 6

    2 차를 간단한 플랫 포머로 어떻게 프로그래밍 할 수 있습니까?

  7. 7

    iPhone에서 glyphicon 요소를 프로그래밍 방식으로 어떻게 변경할 수 있습니까?

  8. 8

    프로그래밍 방식으로 UIImageView의 높이를 어떻게 변경할 수 있습니까?

  9. 9

    직렬 COM 포트 번호를 프로그래밍 방식으로 어떻게 변경할 수 있습니까?

  10. 10

    어떻게 프로그래밍 방식으로 숫자 필드를 Graylog에 기록 할 수 있습니까?

  11. 11

    유전자 프로그래밍에서 루프 구조를 어떻게 구현할 수 있습니까?

  12. 12

    Django 템플릿 언어를 다른 언어로 어떻게 사용할 수 있습니까?

  13. 13

    mutate에서 프로그래밍 방식으로 다항식 함수를 어떻게 사용할 수 있습니까?

  14. 14

    C 프로그래밍에서 배열을 다른 배열에 어떻게 바인딩 할 수 있습니까?

  15. 15

    Google Play 콘솔의 앱을 다른 프로그래밍 언어로 대체 할 수 있습니까?

  16. 16

    나는 한 사람이 그의 프로필에서 한 리트 윗을 얻으려고 노력하고 있습니다. R 프로그래밍을 사용하여 어떻게이 작업을 수행 할 수 있습니까? 아래 읽기

  17. 17

    이 동적 프로그래밍 문제를 어떻게 해결할 수 있습니까?

  18. 18

    Fedora에서 C 코드를 어떻게 프로그래밍하고 디버깅 할 수 있습니까?

  19. 19

    어셈블리 언어로 어떻게 해결할 수 있습니까?

  20. 20

    프로그래밍 방식으로 레이아웃의 각 모서리에 대해 다른 반경을 어떻게 설정할 수 있습니까?

  21. 21

    DLL을 다른 프로그래밍 언어와 함께 사용할 수 있습니까?

  22. 22

    누구든지이 코드 조각의 프로그래밍 언어를 식별 할 수 있습니까?

  23. 23

    C 프로그래밍 언어, 1 판, 연습 1-8 --- 화살표를 표시 할 수 없습니다.

  24. 24

    파이썬 다중 처리를 사용하면 자식 프로세스가 다른 자식 프로세스를 어떻게 종료 할 수 있습니까?

  25. 25

    유니버설 Windows에서 프로그래밍 방식으로 컨트롤의 열 또는 행 범위를 어떻게 설정할 수 있습니까?

  26. 26

    내 파이썬 프로그램이 실행중인 노드를 어떻게 식별 할 수 있습니까?

  27. 27

    ArrayList를 다른 Java 클래스로 어떻게 분리 할 수 있습니까?

  28. 28

    깜박이는 상자가 있습니다. 그래디언트를 추가하거나 더 쉽게 프로그래밍 할 수 있습니까?

  29. 29

    vala 프로그래밍 언어를 사용하여 다른 응용 프로그램이 전체 화면인지 최대화되었는지 감지하고 자체 프로그램을 일시 중단 할 수 있습니까?

뜨겁다태그

보관