CS(76)
-
[CS] 동기 비동기 블록 논블록에 대한 나름의 이해
동기는 작업이 순서대로 처리되는 것이다 비동기는 작업이 동시에 처리되는 것이다 블로킹은 작업을 수행할 때 대기를 할 수 있다는 것이다 논블로킹은 작업을 수행하면 대기 없이 수행하는 것을 의미한다 비동기을 위해서 콜백 함수가 사용되기도 한다 콜백 함수는 다른 함수의 인자로 전달되고 특정 이벤트가 발생하면 실행되는 함수이다 비동기는 호출된 함수가 무언가를 끝까지 책임져야 한다 동기는 호출한 함수가 책임진다 이 넷은 다 다른 개념이다 논블로킹은 다른 함수가 기다리면 끝마치지 않아도 바로 리턴해버린다 결과가 생기면 콜백 함수를 통해 이루어진다고 하고 비동기에서 사용된다고 한다 Referencehttps://dkswnkk.tistory.com/m/488 [OS] (동기/비동기) 와 (블럭/논블록의) 차이서론 os..
2023.10.12 -
[CS] 동기화에 대한 나름의 이해
프로세스나 쓰레드가 공유 자원에 접근할 때 동기화가 되지 않는다면 너무 많은 우유라고 불리는 문제가 생긴다 즉 엄마가 냉장고를 확인해서 우유가 없음을 확인하여 우유를 사러 가는 사이 아빠가 냉장고를 확인해서 우유가 없음을 확인하여 우유를 사온다 그러면 1개만 있어야 하는데 2개가 생겨 문제가 생긴다 이를 해결하기 위해서 크리티컬 섹션(임계 영역)에서의 경쟁 상태를 막아주어야 한다 즉 한번에 하나의 프로세스만 들어가도록 해야하는데 이를 프로세스 동기화라고 한다 프로세스 동기화를 구현하는 방법으로는 크게 두 가지가 있는데 뮤텍스와 세마포어이다 이 둘의 가장 큰 차이는 한번에 얼만큼의 프로세스가 접근 가능한지이다 한번에 하나만 가능하면 뮤텍스 그 이상이면 세마포어이다 뮤텍스는 락을 가진 프로세스 하나만 들어갈..
2023.10.12 -
[CS] 운영체제와 하드웨어의 작동원리에 대한 나름의 이해
cpu, memory, I/o device 간에 어떻게 소통할까? 핵심은 인터럽트를 통한 운영체제의 제어이다 CPU는 매우 빠르다 따라서 이 CPU를 기다리게 만드는 건 비효율적이다 그렇기 때문에 계속적으로 일을 주어야 한다 이 일이란 메모리에서 인스트럭션을 하나씩 읽어서 처리히는 것을 의미한다 프로세스와 os는 memory에 올라간다 이걸 읽고 처리하는 것이다 이때 cpu의 레지스터에는 모드 레지스터가 있는데 이 값이 0이면 커널 모드 1이면 사용자 모드이다 커널 모드에서는 모든게 가능하다 os의 코드는 커널 모드에서 돌아간다 즉 메모리 접근부터 입출력 처리까지 모든게 가능하다 하지만 사용자 모드에서는 이게 안된다 이걸 하고 싶으면 시스템콜을 통해서 요청을 해야 한다 시스템콜이 곧 인터럽트이다 다만 소..
2023.10.11 -
[CS] 브라우저의 역할에 대한 나름의 이해
브라우저의 중요한 역할 중 하나는 화면에 웹페이지를 그리는 것이다 그 과정은 다음과 같다 Html 파싱 -> DOM -> CSSOM(css를 만나면) -> render tree 생성 -> layout -> print Html을 파싱해서 dom 이라는 트리 구조를 만든다 그 과정에서 css를 만나게 되면 cssom 트리 구조를 만든다 이후 이 생성된 dom과 cssom을 이용해 render tree를 만든다 render tree는 실제로 화면에 보이는 요소들이다 따라서 display None으로 된 것은 render tree에 없다 이후 이 화면에 보이는 요소들을 화면에 배치시키는 layout 과정을 거친 후 paint를 하게 된다 Reference https://m.post.naver.com/viewer..
2023.10.11 -
[CS] 멀티 쓰레드에 대한 나름의 이해
동시성과 병렬성 동시성은 하나의 cpu가 마치 동시에 여러 프로그램을 처리하는 것과 같은 특성이다 병렬성은 여러 개의 cpu가 동시에 작업을 처리하는 것을 의미한다 하드웨어적 특성이다 멀티쓰레드는 하나의 프로세스에서 여러 개의 쓰레드를 사용하는 것을 의미하고 장점은 코드 데이터 힙 영역을 공유하기 때문에 하나의 프로그램에서 여러 프로세스를 할 때 필요한 inter process connection(IPC)도 필요없고 많은 메모리 공간도 필요없어 자원을 효율적으로 이용한다 참고로 프로세스는 독립적인 메모리 공간을 가지고 있다 또한 콘텍스트 스위칭에 따른 오버헤드가 없다 하지만 멀티쓰레드의 단점은 데이터가 공유되기 때문에 동기화를 해서 쓰레드 간의 데이터의 일관성을 보장해야 한다 Referencehttps:..
2023.10.10 -
[CS] 운영체제가 하는 일에 대한 나름의 이해
1. CPU 스케줄링 매우매우 빠른 CPU를 어떻게 효율적으로 사용할 것인가 2. 메모리 관리 프로세스마다 메모리를 어떻게 할당하고 관리할 것인가 꼭 똑같이 나누는 방법이 좋은 것이 아니다 프로세스가 원활하게 작동하기 위한 최소 메모리량도 고려해야 한다 3. 스토리지 관리 매우매우 느린 스피닝이라는 방법을 활용하는 하드디스크를 어떻게 하면 효율적으로 저장하고 사용할 것인가 4. I/O 관리 어떻게 하면 cpu와 입출력 간에 정보를 주고 받게 할 수 있는가 그 외 프로세스 생성 및 관리, 네트워킹, 명령어 해석기, 보호 등의 역할을 한다 내가 만약 운영체제라면 어떻게 하는게 좋을지의 관점에서 수업을 듣자 Reference https://core.ewha.ac.kr/publicview/C01010201403..
2023.10.10