semaphore

커널이 파일 액세스를 위한 동기화 기술을 구현하는 방법
semaphore

커널이 파일 액세스를 위한 동기화 기술을 구현하는 방법

파일에 액세스할 때 커널이 동기화 메커니즘을 구현한다는 내용을 읽었습니다. 예를 들어, read()다른 프로세스에서 동시에 파일 시스템의 파일을 사용하거나 쓰거나 읽으 려고 하면 커널은 경쟁 조건을 방지합니다.write() 어떻게 구현되나요? 나는 코드를 작성할 때 서로 다른 스레드나 프로세스가 코드의 일부를 동시에 실행하는 것을 방지하는 뮤텍스와 세마포어를 사용했습니다. 이 경우 커널은 여러 프로세스나 스레드가 동일한 파일 설명자를 읽거나 쓰려고 할 때만 잠금 메커니즘을 구현해야 한다고 가정합니다....

Admin

기존 명명된 세마포어를 여는 방법은 무엇입니까?
semaphore

기존 명명된 세마포어를 여는 방법은 무엇입니까?

O_CREAT분명히 및 기존 세마포어를 열 때는 O_EXCL필요하지 않습니다 . O_CREAT새 세마포어를 생성할 때 필요합니다. O_EXCL와 OR로 연결된 경우에만 의미가 있으며 O_CREAT, 지정된 이름의 세마포어가 이미 존재하는 경우 오류가 반환되도록 지정합니다. sem_open에 대한 Linux 매뉴얼 페이지설명하다 플래그 값의 정의는 <fcntl.h>를 포함하여 얻을 수 있습니다. 그런데 깃발을 못 찾았어요fcntl.h이는 기존 세마포어를 여는 방법을 알려줍니다. ...

Admin

FIFO 기반 세마포어 설명
semaphore

FIFO 기반 세마포어 설명

나는 많은 프로세스(수백 개의 노드에서 전송/실행되는 작업)에서 일부 병렬화를 수행하려고 합니다. 나는 이 해결책을 발견했습니다: https://unix.stackexchange.com/a/216475 # initialize a semaphore with a given number of tokens open_sem(){ mkfifo pipe-$$ exec 3<>pipe-$$ rm pipe-$$ local i=$1 ...

Admin

GNU 병렬 Python 세마포어
semaphore

GNU 병렬 Python 세마포어

파일로 출력하려는 ​​특정 결과를 찾는 GNU Parallel을 통해 병렬화된 Python 스크립트가 있습니다. 현재는 표준 Python 파일 IO를 통해 이 작업을 수행합니다. 문제는 이 파일을 각 병렬 스레드에서 열었는데, 쓰면서 스레드들이 서로 발끝을 밟고 있다는 점입니다. FIFO 세마포어를 구현하고 싶고 그것이 GNU 병렬 스크립트에 있어야 한다고 생각하지만 Python에서 파일에 액세스하는 경우 이를 수행하는 방법을 잘 모르겠습니다. 내 현재 스크립트는 다음과 같습니다 #!/bin/bas...

Admin

병렬 Bash 스크립트의 스레드 수 제한
semaphore

병렬 Bash 스크립트의 스레드 수 제한

제가 사용하는 일부 사진 처리 스크립트를 개선하기 위해 세마포어를 사용하려고 합니다. 나는 주어진 파일 이름을 인수로 취하고 파일을 처리하는 travail이라는 함수를 사용하여 sable GNU/DEBIAN을 실행합니다. 현재 이 함수는 루프를 통해 동일한 스크립트에서 호출됩니다. for i in *.png ; do travail $i & done 문제는 사진이 많으면 메모리를 많이 쓴다는 점이다. 스레드 수를 제한하기 위해 세마포어를 사용하고 싶습니다. 나는 시도했...

Admin

쉘 스크립트의 세마포어에서 권한 가져오기 및 반환
semaphore

쉘 스크립트의 세마포어에서 권한 가져오기 및 반환

쉘 스크립트에서는 다음을 사용할 수 있습니다. ipcmk -S 4 4개의 슬롯이 있는 세마포어를 만듭니다. ipcrm세마포어를 다시 삭제할 수 있습니다 . 그런데 어떻게 사용하나요? semwait, ipcsemget 또는 유사한 항목을 찾을 수 없습니다. 당신은 그렇게 않았다 방법? ...

Admin

proc1.sh
semaphore

proc1.sh

폐쇄. 이 질문에는세부 사항 또는 명확성. 현재로서는 답변이 허용되지 않습니다. ...

Admin

동일한 애플리케이션 ID를 가진 시스템에서 여러 Apache 인스턴스가 실행 중인 경우 특정 Apache 인스턴스에 대한 세마포어 및 공유 메모리 개체를 가져오는 방법
semaphore

동일한 애플리케이션 ID를 가진 시스템에서 여러 Apache 인스턴스가 실행 중인 경우 특정 Apache 인스턴스에 대한 세마포어 및 공유 메모리 개체를 가져오는 방법

이 질문이 이 포럼과 관련이 있는지 확실하지 않습니다. "동일한" 애플리케이션/기능 ID로 실행되는 3개의 Apache 인스턴스가 있는 서버가 있습니다. 이러한 인스턴스는 동일한 상자에서 프로세스 간 통신을 사용하여 해당 Siteminder 웹 에이전트와 통신합니다. 이제 ipcs 명령을 실행하여 세마포어 및 공유 메모리 개체를 찾으면 "모든" 개체가 표시되고 ipcrm 명령을 사용하여 삭제된 개체가 무엇인지 알 수 없습니다. 특정 Apache 인스턴스에서 사용되는 인스턴스만 표시하는 방법이 ...

Admin

이름이 지정되지 않은 POSIX 세마포어의 초기화를 동기화하는 방법은 무엇입니까?
semaphore

이름이 지정되지 않은 POSIX 세마포어의 초기화를 동기화하는 방법은 무엇입니까?

여러 프로세스에서 명명되지 않은 POSIX 세마포어를 사용하려면 공유 메모리의 일부에 대한 액세스를 생성/획득해야 합니다. 그런 다음 프로세스는 sem_init공유 메모리에 대한 참조를 첫 번째 인수로 사용하여 세마포를 호출하여 초기화해야 합니다. 하지만 이 작업은 한 번만 허용됩니다! POSIX설명하다: 이미 초기화된 세마포어를 초기화하려고 하면 정의되지 않은 동작이 발생합니다. 문제는 세마포어가 존재하고 초기화되었는지 여부를 원자적으로 테스트하고, 존재하지 않으면 초기화할 방법이 없다...

Admin

Bash의 파일에서 원자 쓰기 작업 수행
semaphore

Bash의 파일에서 원자 쓰기 작업 수행

후 the 난교문서,이것질문과이것Bash에서 파일에 원자적 쓰기(추가) 작업을 수행하는 방법이 아직 확실하지 않습니다. 여러 인스턴스에서 실행되는 스크립트가 있는데 어떤 시점에서는 데이터를 파일에 기록해야 합니다. echo "$RESULT" >> `pwd`/$TEMP_DIR/$OUT_FILE 동시에 실행되는 모든 스크립트에서 이 파일에 대한 모든 쓰기를 원자성으로 만들려면 어떻게 해야 합니까(한 인스턴스의 데이터가 다른 인스턴스의 데이터와 겹치지 않도록)? ...

Admin

프로세스는 세마포어를 기다립니다.
semaphore

프로세스는 세마포어를 기다립니다.

대기 중인 프로세스가 있고 psWCHAN 열에서 세마포어를 얻기 위해 기다리고 있는 것을 볼 수 있는 경우 해당 세마포어의 주소를 찾을 수 있는 방법이 있습니까? ...

Admin

semop 실패를 디버깅하는 방법은 무엇입니까?
semaphore

semop 실패를 디버깅하는 방법은 무엇입니까?

Linux를 사용하여 2.6.30-gentoo-r4매우 복잡한 코드 시스템(4.4.9-pl0-gentoo 및 5.2.10-pl0-gentoo 사용)을 실행하면 때때로 세마포어 차단 문제가 발생합니다. 함수 호출 php이 차단되어 결국 시스템이 충돌하게 됩니다.phpsem_acquire 그러나 문제의 세마포어는 php다른 프로세스에 의해 차단된 것으로 보이지 않아 추가 조사를 하게 되었습니다. php문제가 있는 프로세스와 해당 프로세스를 식별하여 strace차단 세마포어를 발생시킬 수 있었습니다 . ...

Admin