728x90
반응형

context switching 2

[msa-perf-lab] Python과 Go 비교: I/O & CPU Bound 작업에서의 동시성 차이 분석 - GIL, Gouroutine, M:N 스케줄링

MQ 비동기 도입 전/후 테스트를 진행하며, 파이썬의 I/O 작업 처리 방식에 궁금증이 생겼다. 1초가 걸리는 요청을 초당 100개씩 보냈는데도 1초마다 100개를 전부 응답했기 때문이다. 파이썬은 GIL 때문에 한번에 하나의 작업만 처리하는 걸로 알고 있었는데다가, 내가 비동기 처리를 하지 않았는데도 비동기처럼 동작하길래 무슨 원리인지 궁금해서 파 보았다. GIL(Global Interpreter Lock)GIL은 Global Interpreter Lock의 약자로서, 간단히 말하면 파이썬에서 하나의 프로세스(워커)가 동시에 하나의 CPU 작업만 실행하게 하는 제약조건이다. 이 제약 때문에 파이썬 코드는 언제나 동시에 단 한개만 실행된다. 그러나 이것이 싱글스레드로 동작한다는 말은 아니다. 필요에..

PintOS 프로젝트 2주차 커널 모드, Context Switching, fsync()

1.1 커널 모드에서 실행될 수 있는 작업-> 공유 자원 관리- 공유 자원 관리는 운영체제의 중요한 기능 중 하나로, 주로 커널 모드에서 실행된다.- 파일시스템, 메모리, 프린터 등과 같은 자원은 여러 프로세스에 의해 동시에 요청될 수 있기에, 접근과 사용을 적절히 관리하는 것이 필수적이다.- 커널 모드는 이러한 자원들에 대한 접근을 제어하고 충돌/데이터 손상을 방지한다. 1.2 공유 자원 관리가 사용자 모드에서 실행되지 않는 이유- 여러 사용자 또는 프로세스가 자원에 직접 접근할 경우, 데이터의 일관성과 안정성이 위협받을 수 있기 때문이다.  2. 운영체제에서 Context Switching이 발생하는 과정에서 어떤 정보가 저장되고 복원되는가?- 현재 프로세스의 상태(Context, 문맥)를 저장하고 ..

728x90
반응형