https://www.youtube.com/watch?v=M9ZrQX1UgAU
널널한 개발자님 영상이 퀄리티가 좋고 이해하기가 쉬워서 개념 정리를 위해 사용하게 되었습니다.
데이터베이스, 자료구조, 운영체제 등 좋은 자료가 많은 것 같습니다.
오랜만에 운영체제 기본기를 정리하고자 해당 영상을 들었는데 요약하자면 다음과 같습니다.
컴퓨터는 하드웨어, 소프트웨어로 이루어져있고 여기서 소프트웨어는 다시 Kernel과 Application으로 나뉘는데
커널은 하드웨어와 맞닿은 시스템 프로그램의 영역, 어플리케이션은 서비스 측의 유저레벨이라고 보면 될 것 같다.
수업시간에 Virtualization memory 관리등을 구현하기도 했고 page 교체 방법등 과제가 있었던 것 같은데 정확한 기억은 안나지만, 시스템 콜과 interrupt 등을 오랜만에 다시 들으며 그 당시는 왜 이런걸 배워야 되는지 몰랐는데 아 이때 왜 이런걸 배워야했지라는 걸 되새김을 할 수 있었다.
커널은 결국 위 어플리케이션을 서포트하고 밑 하드웨어를 관리하고 제어하는 역할을 맡는다.
컴퓨터가 주변기기(하드웨어 등)과 통신을 할때 입출력(I/O) 를 해줘야하고 이러면서 Interrupt가 발생한다.
프로세스에서 call을 하면 API를 호출하게 되고 이는 interface로 넘어가면서 커널로 요청할때 전혀다른 구조로 재호출을 해줘야하는데 이때 System call이 이루어진다. 다시 여기서 인터럽트를 요청하게 되는데 이를 IRQ 인터럽트리퀘스트(IRQ)라 하고 특정 번호가 주어지게 된다. 할일이 다 끝나면 인터럽트를 발생시키고 끝났다는 신호를 발생시키면서 순차적으로 리턴하며 종료되게 된다.
blocking, non-blocking은 동기 비동기로 할일을 끝까지 완료할때 까지 기다리는지, 아니면 호출하고 자신은 다른 일을 할 수 있는지에 구분된다.