오늘은 운영체제 :)

윈도우와 리눅스의 차이점은?

윈도우는 GUI(Graphical User Interface)기반으로, 인터페이스를 클릭하는 방식이다.
반면 리눅스는 명령어 기반으로 이뤄진다는 사용성의 특징이 있다.

리눅스는 오픈소스이기 때문에 누구나 버그 수정이 가능하지만 윈도우의 소스는 비공개로 회사의 업데이트를 기다려야 한다.

프로세스와 스레드의 차이점은?

프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이다.
실행될 때 운영체제로부터 프로세서, 필요한 주소공간, 메모리 등의 자원을 할당 받는다.

스레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위이다.
한 프로세스 내에서 동작되는 여러 실행의 흐름으로, 프로세스 내의 주소 공간과 자원들을 같은 프로세스 내에서 스레드끼리 공유할 수 있다.

멀티 스레딩이란?

하나의 프로세스를 다수 실행 단위로 구분해 자원을 공유하고, 자원의 생성/관리 중복성을 최소화해 수행 능력을 향상시키는 것을 말한다.
이 때 각각의 스레드는 독립 작업을 수행해야 하기 때문에 각자의 스택과 PC 레지스터 값을 갖고 있다.

멀티 프로세스로 실행되는 작업을 멀티 스레딩으로 실행할 경우,
프로세스를 생성해 자원을 할당하는 시스템 콜이 줄어 자원을 효율적으로 관리할 수 있다.
프로세스 간의 통신보다 스레드 간의 통신 비용이 적어 작업 간의 통신 부담이 줄어든다.

효율은 좋지만 스레드 간 자원 공유는 전역 변수를 이용해 동기화 문제에 신경써야 한다는 단점이 있다.