CS/운영체제
스레드 안전(Thread-Safety)란?
멀티 스레드 프로그래밍 멀티스레드 프로그래밍은 하나의 프로세스에서 여러 개의 스레드를 만들어 자원의 생성과 관리의 중복을 최소화하는 것이다. 장점 멀티 프로세스에 비해 메모리 자원소모가 줄어든다. Heap 영역을 통해서 스레드 간의 통신이 가능하기 때문에 프로세스 간의 통신이 간단해진다. 스레드의 컨텍스트 스위칭은 프로세스의 컨텍스트 스위칭보다 훨씬 빠르다. 단점 힙 영역에 있는 자원을 사용할 때 동기화를 해야한다. 동기화를 위해서 락을 과도하게 사용하면 성능 저하가 발생할 수도 있다. 하나의 스레드가 비정상적으로 동작하면 다른 스레드도 영향을 받아 종료하게 될 수도 있다. 스레드 안전(Thread-Safety) 스레드 안전(Thread-Satety)란 멀티 스레드 프로그래밍에서 일반적으로 어떤 함수나 ..
동기-비동기와 블럭-논블록의 차이
Sync와 Async 일반적인 경우 메소드를 실행시킴과 동시에 반환 값이 기대되는 경우를 동기라하며, 그렇지 않은 경우는 비동기라고 한다. 여기서 동기에서 동시에라는 표현은 값이 변환 되기 전까지 blocking되어 있는 것이며 비동기의 경우 blocking 되지 않고 이벤트 큐에 넣거나 백그라운드 스레드에게 해당 task를 위임해 바로 바로 다음 코드를 실행하는 것을 말한다. 동기/비동기는 두 개 이상의 무엇인가가 시간을 맞춘다/ 안맞춘다로 구분할 수 있다. 동기 방식은 메서드 리턴과 결과를 전달받는 시간이 일치하는 명령 실행 방식이며 한 함수가 끝났다는 시간과 바로 다음 함수가 시작하는 시간이 같다. 비동기 방식은 여러 개의 처리가 함께 실행되는 방식으로 동기 방식에 비해 단위 시간당 많은 작업을 처..
프로세스와 스레드의 차이
프로세스와 스레드의 차이 1. 프로그램(Program)이란 ? 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태이며 어떠한 작업을 위해 실행할 수 있는 파일을 뜻한다. 2. 프로세스(Process)란? 프로세스란 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램으로 메모리에 올라가서 실행되고 있는 프로그램의 인스턴스를 말한다. 운영체제로부터 시스템의 자원을 할당받은 작업의 단위이며, 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있는다. 각 프로세스는 별도의 주소 공간에서 실행되고 있으며 각 프로세스끼리는 자원의 공유를 하지 않는다. 또한 하나의 프로세스가 다른 프로세스이 자원에 접근하려면 프로세스간의 통신이 필요하면 메일 슬롯, 파이프, 소켓, 시그널, 공..
컴퓨터 시스템의 동작 원리-3
컴퓨터 시스템의 구조 1. 하드웨어 보안 운영체제는 여러 프로그램이 동시에 실행될 수 있는 다중 프로그래밍 환경에서도 동작한다. 따라서 각 프로그램이 다른 프로그램의 실행을 방해하거나 프로그램 간에 충돌을 일으키는 문제를 막기 위해 하드웨어 대한 각종 보안 기법이 필요하다. 하드웨어적인 보안을 유지하기 위해서 운영체제는 기본적으로 커널모드와 사용자모드인 두 가지 모드를 지원한다. 어떤 프로그램이 이상한 명령을 통해 다른 프로그램의 메모리 영역이나 파일 영역을 침범하는 경우가 발생할 수 있으며, 중요한 정보에 접근해 위험한 상황을 초래할 수 있는 연산은 커널모드에서만 실행가능하도록 한다. 또한 그렇지 않은 일반적인 연산만 사용자모드에서 사용자 프로그램이 수행하도록 통제하여 보안성을 확보하게 된다. 커널모드..