운영체제는 사용자에게 편리한 인터페이스 환경을 제공하고 컴퓨터 시스템의 자원을 효율적으로 관리하는 소프트웨어이다.컴퓨터의 자원(키보드, 네트워크카드, 사운드 카드 등)은 한정적이다. 운영체제를 통해 적당한 순서로 자원을 배분하고 적절한 시점에 자원을 회수하여 다른 응용
산술논리 연산장치(ALU)데이터의 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 산술연산과 AND,OR같은 논리 연산을 수행한다.제어장치작업을 지시하는 부분을 제어장치라고 한다.레지스터CPU내에 데이터를 임시로 보관하는 곳을 레지스터(Register)라고 한다.간략한 처리과정(h
DRAM(동적 램)과 SRAM(정적 램)이 있다.메인메모리를 비휘발성 메모리로 만들면 전력이 사라져도 내용이 남아서 편할 수도 있다 하지만 비휘발성 메모리는 전력의 유무에 상관없이 데이터를 가지고 있어야하기에 메모리 내부가 복잡하고 속도가 느리며 가격이 높다. 따라서
오늘날의 시분할 시스템에서는 운영체제를 포함한 모든 응용 프로그램이 메모리에 올라와 실행되기 때문에 메모리 관리가 매우 복잡하다. 이는 도마 하나의 구역을 나누어 여러재료를 올려놓고 요리하는 것에 비유할 수있다. 이처럼 복잡한 메모리 관리는 메모리 관리 시스템이 담당한
프로그램은 컴파일러가 컴파일 과정을 거쳐 컴퓨터가 이해할 수 있는 기계어로 번역되어 실행될 수 있는 파일이 되는 것을 의미하며 '컴파일 과정'이란 다음과 같습니다.이는 별도의 컴파일 과정없이 한번에 한줄 씩 읽어으면서 실행하는 인터프리터 언어로 된 프로그램과는 다릅니다
프로세스(process)는 컴퓨터에서 실행되고 있는 프로그램을 말하며 cpu스케줄링의 대상이 되는 작업(task)와 거의 같은 의미로 쓰입니다.프로세스의 상태는 여러가지 상태 값을 가집니다.프로세스의 상태는 프로세스가 생성되고 끝날 때까지 계속해서 바뀌는데, 그 이유로
운영체제는 프로세스에 적절한 메모리를 할당하는데 다음 구조를 기반으로 할당합니다.프로세스의 주소 공간은 코드(code), 데이터(data), 스택(stack), 힙(heap) 영역으로 구성된다.이러한 주소 공간을 우리는 가상 메모리라고 부른다.사용자가 작성한 프로그램
프로세스를 실행하는데 필요한 주요한 정보를 보관하는 자료구조로 TCB(Task Control Block)이라고도 불린다. 모든 프로세스는 고유의 프로세스 제어블록을 가지며, 프로세스 제어블록은 프로세스 생성시 만들어져서 프로세스가 실행완료되면 폐기된다.즉, PCB란 운
프로세스 & 스레드 프로그램 파일이 저장 장치에 저장되어는 있으나, 메모리에는 올라가있지 않은 정적인 상태 어떠한 작업을 위해 실행할 수 있는 파일을 의미합니다. 프로세스 프로그램이 메모리에 올라오면 OS로부터 CPU를 할당받고 프로그램이 실행되어 있는 상태 할당
공유자원은 여러 프로세스가 공동으로 이용하는 변수, 메모리, 파일 등을 말합니다.공유 자원은 공동으로 이용되기 때문에 누가 언제 데이털르 읽거나 쓰느냐에 따라 그 결과가 달라질 수 있다.따라서 프로세스들의 공유 자원 접근 순서를 정하여 예상치 못한 문제가 발생하지 않도
TCP/IP 네트워크 상에서 컴퓨터들이 파일을 교환하기 위해 1971년에 최초로 공개된 통신 규약이다. FTP는 client - server 프로토콜2개의 기본 채널이 필요21 번 포트 사용파일을 업로드, 다운로드, 수정을 한다.파일을 작업하는 동안은 서버와 계속 연결
2개이상의 프로세스가 다른 프로세스의 작업이 끝나기만 기다리며, 작업을 더이상 진행하지 못하는 상태교통 체증이 심해서 서로 비켜주기를 기다리며 꼼짝못하는 상태와 같다.시스템 자원교착 상태는 다른 프로세스와 공유할 수 없는 자원을 사용할 때 발생한다.공유 변수응용 프로그
마이크로프로세서(CPU)가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치에 예외상황이 발생하여 처리가 필요할 경우에 마이크로프로세서에게 알려 처리할 수 있도록 하는 것을 말한다.프로세스가 실행중인 명령어로 인해 발생하는 동기적 인터럽트프로그램상의 문제로 인해
시스템 호출(system call)은 운영 체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스이다. 보통 C나 C++과 같은 고급 언어로 작성된 프로그램들은 직접 시스템 호출을 사용할 수 없기 때문에 고급 API를 통해
스핀 락(Spin lock)은 임계 구역에 진입이 불가능할 때 진입이 가능할 때까지 루프를 돌면서 재시도하는 방식으로 구현된 락을 가리킵니다.임계 구역 진입 전까진 루프를 계속 돌고 있기 때문에 'busy waiting'이 발생하게 됩니다.다음은 spin lock을 사
동기화란 프로세스 또는 스레드들이 수행되는 시점을 조절하여 서로가 알고 있는 정보가 일치시키는 것을 의미합니다.a라는 자원이 있다고 봅시다. a = 2인 상태에서 P1이라는 프로세스가 a라는 값을 이용해서 어떠한 로직을 수행합니다.만약 그 사이 P2라는 프로세스가 a의
CPU 스케줄링은 어떤 작업에 CPU를 배정할지 결정하는 것을 말한다. 컴퓨터 시스템의 효율은 어떤 프로세스에 CPU에 먼저 배정하느냐에 따라 달라지므로 CPU 스케줄링은 작업의 형평성과 효율성을 결정하는 중요한 일이다.전체 시스템의 부하를 고려하여 작업을 시작할지 말
가상 메모리는 물리메모리(실제메모리)의 크기와 상관없이 메모리를 이용할 수 있도록 지원하는 기술이다. 가상메모리는 크기가 다른 물리 메모리에서 일관되게 프로세스를 실행할 수 있는 기술이다.https://velog.io/@narangke3/%EC%9A%B4%EC
Cache란 자주 사용하는 데이터나 값을 미리 가져다 놓는 임시 장소를 가리킨다.캐시는 저장 공간이 작고 비용이 비싼 대신 빠른 성능을 제공한다. 속도가 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리를 말한다.ex1) CPU 코어와 메모리
프로세스간 공유메모리를 통해 공유된 자원에 여러개의 프로세스가 동시에 접근하면 Critical Section이 발생할 수 있다. 이러한 동시성 프로그래밍의 문제점중 '공유자원 관리'를 위해서 상호배제(Mutual Exclusion)을 만족시키기위해 Mutex와 Sema
스레드 안전(thread 安全, 영어: thread safety)은 멀티 스레드 프로그래밍에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없음을 뜻한다. 보다 엄밀하게는 하나의 함수가 한 스레드로부터