Skip to content

허진, 권영기 조 2,3장 질문입니다. #2

@kykapple

Description

@kykapple

멀티코어 시스템에서 프로세스A에 여러 개의 쓰레드가 생성되어 있고, 이 프로세스가 스케줄링 되었다고 가정하겠습니다. 이 때 여러 쓰레드들이 하나의 코어만을 가지고 수행되는지, 아니면 여러 쓰레드들이 다른 코어에 흩어져서 수행되는지 궁금합니다. htop 명령어를 통해 관찰해본 결과로는 다른 코어에 흩어져서 수행되는 것을 확인할 수 있었는데, 코어의 부하를 균등하게 하기 위해 결국 로드 밸런싱을 위해 다른 코어에 흩어져서 수행되는 것이 아닐까 하는 생각을 해보았습니다.

시스템 호출에 대해 공부하다 fork()이외에도 vfork()에 대해 알게 되었는데, Copy On Write기법이 있음에도 불구하고 vfork()를 사용하는 경우가 있는지 궁금합니다.
vfork() 특징 :
1. 부모 프로세스의 메모리를 복사하는 fork()의 비효율성을 극복하기 위해 등장
2. 부모 프로세스의 메모리를 복사하지 않고 공유하기 때문에 자식 프로세스에서 데이터를 변경하면 부모 프로세스가 변경한 내용을 볼 수 있다.
3. 부모 프로세스의 수행은 자식 프로세스가 exec()이나 _exit()을 수행할 때까지 중단된다.

시스템 호출을 하는 과정에서 system call number를 가지고 소프트웨어 인터럽트를 통해 커널로 진입하여 시스템 호출을 한다고 하였을 때, 시스템 호출에 전달하는 매개 변수의 개수가 CPU내의 가용한 레지스터의 개수보다 많다면 어떠한 방식으로 매개변수가 전달되는지 궁금합니다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions