Operating System

    경쟁 조건(Race Condition)

    경쟁 조건이란경쟁 조건(Race Condition)이란 여러 프로세스나 스레드가 공유 자원에 동시에 접근하여, 실행 순서에 따라 결과가 예측 불가능하게 달라지는 상황을 말한다이 경쟁조건을 해결하기 위한 방법 중 하나가 자원에 대해 Lock을 거는 것이고그 Lock이 적절히 걸리지 않았을때, 데드락이 발생하게 되는것 같다 임계영역(Critical Section)경쟁조건을 유발시키는 코드영역을 임계영역(Critical Section)으로 정의합니다.

    메모리

    메모리 계층구조위로 올라갈 수록빈도: 많아짐속도: 빨라짐가격: 비싸짐용량: 작아짐마지막 하드디스크(ssd)빼고는 다 휘발성(전기가 없으면 데이터 사라짐)가상메모리가상 메모리는 적은 메모리로 여러 프로세스를 실행시키기 위한 시스템메모리가 실제 메모리보다 많아 보이게 하는 기술프로그램을 실행하면 필요한 페이지들이 가상 메모리의 주소 공간에 할당됨하지만 물리 메모리에 모든 페이지를 올려놓을 수 없음(여러 프로세스가 실행중일때)그래서 실제로 자주 사용되는 페이지들만 물리 메모리에 저장된다나머지 덜 자주 사용되는 페이지들은 스왑 영역으로 보내져 디스크에 저장프로그램이 스왑 영역에 있는 페이지를 필요로 하면운영체제가 해당 페이지를 스왑 인하여 물리 메모리로 불러오고, 그 자리에 잘 안쓰는 다른 페이지를 스왑 아웃하..

    데드락(deadlock)이란

    데드락이란 프로세스가 다른 자원을 기다리면서 영원히 실행이 멈추는 상태‘교착 상태’라고도 하며 시스템적으로 한정된 자원을 여러 곳에서 사용하려고 할 때 발생합니다.process 1은 resource 2를 필요로하고Process 2는 resource 1을 필요로해서 대기중이지만 process 2가 끝나야 Process 1이 가능하고 Process1이 끝나야 Process2가 가능한 상태그래서 계속 물고 물려서 어느것도 끝나지 않고 멈춰있는 상태 데드락의 발생 조건 상호 배제(Mutual Exclusion): 자원은 한 번에 하나의 프로세스만 사용할 수 있어야 함점유 및 대기(Hold and Wait): 자원을 점유한 상태에서 다른 자원을 요청하면서 기다려야 합니다.비선점(Non-preemption): 한 ..

    스레드(Thread)

    스레드란 무엇?스레드는 하나의 프로세스 위에서 동시에 동작하는 여러 작업들이라고 보면된다(작업의 단위)멑티 스레드위 그림처럼 두개 이상의 스레드가 있는 것을 멀티 스레드라고 한다저렇게 진행이 중간에 끊기는 이유는 스레드는 프로세스 내에서 자원을 공유하는데스레드가 동시에 진행되게 되면 동일한 자원에 동시에 손을 대서 원하는 동작을 안할수가있다그래서 동시성을 제한해서 구현해야함예) 하나의 버튼을 한 스레드당 10번씩 누를 때 예상 값은 20이 카운트 되길 원했는데, 동시에 눌린 경우가 있어서 카운트가 15인경우 스레드의 자원 공유스레드는 프로세스의 4가지 메모리 영역 중, stack영역 만을 독립적으로 갖고나머지 3개의 메모리 영역은 다른 스레드와 공유하게된다 독립적인 stack을 가지고 있다는 것의 의미s..

    프로세스

    프로세스란운영체제 위에서 실행되고 있는 프로그램을 의미한다단순히 저장된 프로그램 자체가 아니라,실행되어 메모리와 cpu 자원 등을 활용하고 있는 동적인 실행 단위 이다멀티 프로세스란?하나의 프로그램이 여러개의 프로세스로 이루어져있으면 멀티 프로세스 프로그램이라고 부름예) 크롬을 예로 들면 정확하진 않지만 탭하나당 하나의 프로세스이거나,확장프로그램 하나당 하나의 프로세스이거나 하는 식이다멀티 프로세스 구현 방식단일 코어 cpu단일 코어에서는 병렬적으로 프로세스가 돌아가게는 불가능대신 운영체제가 동시성(Concurrency)을 활용하여여러 프로세스가 교대로 실행되도록 스케줄링합니다.다중 코어 cpu다중 코어에서는 실제로 병렬적으로 동시에 프로세스가 동작하는것이 가능코어가 프로세스를 하나씩 맡아서 처리 가능프..

    [linux] curl 명령어

    curl 이란?Client Url의 약자로클라이언트에서 url을 사용해서 서버와 데이터를 송수신하는 명령어 툴이다.리눅스, 윈도우, 맥 등 다양한 os에서 쓰이는 프로그램이고 다양한 프로토콜을 지원한다https://curl.se/지원 프로토콜등 자세한 사항은 여기서 확인 가능하다 터미널에서 사용 방식은 아래와 같다curl [option] [url] homebrew설치를 예로들면curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh위의 명령어중 욥션의 의미는 -f : 오류발생시 출력없이 실패( 조용히 종료시키기 )-s : 진행 내역이나 메세지를 출력하지 않기-S: --show-error : Show error even ..

    리눅스 및 패키지관리자 종류 (yum,rpm,apt,dpkg)

    참고 블로그 https://m.blog.naver.com/dkdldoafotn/221660523757Red Hat LinuxCentOsOracle LinuxFedoraRed Hat Enterprice Linux패키지 관리툴 : rpm, yumDebian LinuxUbuntu, Debian패키지 관리툴 : apt, dpkg

    win32, win64 차이

    win32 는 2의 32승 만큼의 데이터를 처리할수 있고(42억 가지) win64 는 2의 64승 만큼의 데이터를 처리할수있다.(1천800경 가지)