메모리 안에 운영체제가 차지하는 부분이 항상 존재하고 그 이외가 유저공간 맞나요?
근데 프로세스 보기 들어가면 왜 OS는 목록에 안나오는거죠?
그리고 항상 궁금했던거는 OS 용랑이 대부분 몇기가~ 수십기가씩 하잖아요.
그거를 돌릴수 있는게 가상메모리때문인가요? 아니면 그중에서 일부만 메모리에 놓여지기 때문인가요?
메모리 안에 운영체제가 차지하는 부분이 항상 존재하고 그 이외가 유저공간 맞나요?
근데 프로세스 보기 들어가면 왜 OS는 목록에 안나오는거죠?
그리고 항상 궁금했던거는 OS 용랑이 대부분 몇기가~ 수십기가씩 하잖아요.
그거를 돌릴수 있는게 가상메모리때문인가요? 아니면 그중에서 일부만 메모리에 놓여지기 때문인가요?
os가 데이터 주물럭 거리는 장소가 메모리에얌!
c++충// os가 메모리 위에 있어야 데이터를 만지잖아요
작업관리자에서 보이는건 사용자가 임의로 꺼버릴 수 있는데 OS는 그러면 안되니까 감춰놓은거 같아얌! 가상메모리 사용 꺼놔도 윈도우 7 64bit 기준으로 3기가 정도밖에 안쓸거에얌
그렇군요! 근데 운영체제 메모리가 3기가나 차지하나요? 항상 궁금했던게 운영체제 파일 용량은 몇기가씩 하는데 보통 컴퓨터 램은 옛날에는 수백메가밖에 안됐었고 요즘도 4기가정도?인데 만약에 윈도우가 4기가라고 하면 램 위에 윈도우가 떡하니 4기가 있는건 아니잖아요?
운영체제 전체가 메모리에 올라가겠어요..? 커널이랑 필요한 드라이버만 미리 메모리에 로드해 두고 음 그러니까 필요할 때마다 운영체제의 일부를 메모리에 로드해서 쓰는거져
뭔가 착각하고 있는 거 같은데. 운영체제는 프로세스 목록에 없는 게 정상이야. 운영체제 코드는 프로세스의 코드를 실행하다가 실행된다. 그것이 유저 프로그램이 운영체제 기능을 쓰기 위해 시스템 콜을 호출했든, 장치로부터 인터럽트가 발생해서 현재 프로세스의 작업을 잠깐 멈추고 운영체제의 코드를 먼저 처리하든. 말야. 운영체제 커널 코드가 실행될 때는 항상 현재 실행 중이던 유저 프로세스라는 이름 하에서 커널 코드가 수행 돼.
Windows에서는 작업 관리자에서 [모든 사용자의 프로세스 표시] 모드로 프로세스 목록을 봐 보면 "[...]"이랑 "System Idle Process (ID: 0)"라는 특수 프로세스를 볼 수 있는데, System 프로세스는 운영체제 부팅 시 가장 먼저 초기화 작업을 위해 윈도우 커널이 생성한 ntoskrnl.exe(커널 파일) 프로세스를 System이라고 이름 붙인 거고. System Idle Process 프로세스는 실제로 존재하는 프로세스가 아니라 CPU 자원이 얼마나 놀고 있나 표시하기 위한 pseudo process(가짜 프로세스)야.
윈도우에서는 커널 내부에서 뭔가 열심히 시스템 스레드 만들어서 돌리는 경우도 있을 수 있어서 System이라는 특수 프로세스를 생성하고 태스크 스위칭 시 스케줄러가 자원을 주기도 하는데 그거 자체가 운영체제 커널 프로세스인 건 아니야. ㅇㅇ. System의 메모리를 보면 수백 KB 밖에 안하는데 커널이 그 정도의 메모리만 쓸리도 없잖아?
님들 감사합니다! 이제 뭔가 알거같아요