no image
[C] C기본
https://www.youtube.com/watch?v=I5jmg6uUTbQ&list=PLXvgR_grOs1AQuQ-5mWbx0zdG0betdeoL&index=1 컴파일 : 인간이 이해할 수 있는 언어로 작성된 코드를 기계어로 변환하는 작업 전처리 과정 -> 컴파일 과정 -> 어셈블리 과정 -> 링킹 과정 1. 전처리 과정 : 소스 코드 파일(*.c)을 전처리된 소스 코드 파일로 변환(*.i), 주석 제거, 헤더 파일 삽입, 매크로 치환 및 적용 ※ 전처리기 : 컴파일하기 전에 프로그램에 대한 일련의 작업을 수행하는 것, 기계어 코드를 생성하지 않으며 소스 코드를 컴파일하기 좋게 가공 2. 컴파일 과정 : 전처리된 소스 코드 파일을 어셈블리어 파일(*.s)로 변환, 문법 검사, 정적 영역들의 메모리 할..
2023.12.21
no image
[OS] 교착상태
교착상태(Deadlock) 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황 발생조건 비선점 상호배제 순환대기 점유대기 해결방법 높은 우선순위의 프로세스가 해당 자원을 선점할 수 있게 하기 한 번에 여러 프로세스가 공유 자원 접근 가능하게 하기 자원을 순환 형태로 대기시키지 않고 한 쪽 방향으로만 요구할 수 있도록 하기 실행에 필요한 모든 자원을 한번에 요구
2023.12.18
no image
[OS] IPC
IPC(Inter Process Communication) Process는 각자 독립된 공간을 가지고, 외부 접근을 허용하지 않도록 OS가 보장 커널 영역에서 이루어지는 프로세스 간 통신 memory 기반(고정 길이)과 file 기반(가변 길이)이 있음 네트워크로 확장되면 소켓, RPC 윈도우는 registry 기반도 있음 Shared Memory memory 기반 두 프로세스의 가상 메모리가 실제로 같은 물리적 메모리를 사용할 때 한 쪽의 처리가 끝날 때까지 기다렸다가 처리 반대로도 마찬가지 Pipe file 기반 두 프로세스를 연결해 한쪽은 읽고, 한쪽은 쓰는 방식 직렬하는 데이터를 보낼 때 유리 임계구역(Critical Section) 둘 이상의 스레드가 동시에 접근해서는 안되는 공유 자원(memo..
2023.12.18
no image
[OS] 스케줄링
스케줄링(Scheduling) 시스템의 부하 상태를 막으면서 CPU의 처리량 최대화를 위해서 수행 고수준 스케줄링 : 한번에 수행할 양을 조절 저수준 스케줄링 : job에 따라 수행할 순서 등을 미세하게 조절 선점형(Preemptive) 방식, 비선점형(Non-Preemptive) 방식 방식 FCFS(First Come First Served) : 준비 큐에 도착한 프로세스 순서대로 CPU를 할당하는 방식, 비선점 방식 라운드 로빈(Round-Robin) : FCFS와 비슷하지만, 프로세스마다 CPU 사용 시간을 일정하게 할당하여 시간이 지나면 다음 프로세스에게 CPU 사용권을 넘김, 선점 방식 SJF(Shortest Job First) : 준비 큐에 대기하고 있는 프로세스 중 예상 실행 시간이 가장 짧..
2023.12.18
no image
[OS] Process와 Thread
프로그램 어떤 작업을 위해 실행할 수 있는 파일 프로세스 프로그램을 실행해 운영체제로부터 시스템 자원(CPU와 RAM)을 할당받는 작업의 단위, 프로그램의 인스턴스 프로세스가 유저모드에서 실행되면 커널이 메모리를 할당해줌 -> 이때 실제 메모리가 아니라 가상 메모리(RAM + HDD)를 할당해줌 각각 독립된 메모리 영역(code, data, stack, heap)을 할당 받음 한 프로세스는 다른 프로세스의 변수나 자료 구조에 접근 불가능, IPC를 사용해야함 운영체제는 프로세스를 PCB(Process Control Block)라는 곳에 필요한 정보를 넣어두고 관리함 스레드 프로세스가 할당받은 자원을 이용하는 실행의 단위 -> 스레드는 해당 자원으로 제한됨 스레드마다 stack(통상적으로 1MB) , 레지..
2023.12.15
no image
[OS] 운영체제
컴퓨터의 자원을 효율적으로 관리하고, 사용자가 컴퓨터를 효과적으로 사용할 수 있도록 환경을 제공하는 프로그램의 모임 메모리, 프로세스, 입출력 등을 관리하고 사용자 인터페이스를 제공 리눅스, 윈도우 등 ※ 파일은 커널 모드의 구성 요소에 접근하기 위한 인터페이스 -> tcp/ip에 접근하기 위한 파일이 socket Shell과 Kernel Shell : 사람이 이해하기 쉬운 형태의 명령어를 입력하면 이를 해석해서 커널에 전달해주는 역할 Kernel : 사용자가 쉘을 통해 입력한 명령어를 기계가 이해할 수 있는 표현으로 바꾸어 전달해주는 역할, 하드웨어를 제어하고 시스템 자원 관리 유저모드와 커널모드 유저모드 : 유저가 접근할 수 있는 영역을 제한두고, 프로그램의 자원에 함부로 침범하지 못하는 모드 커널모..
2023.12.15
no image
[OS] 컴퓨터 구성
프로그램을 실행하면 보조기억장치에 저장된 데이터를 주기억장치로 불러와 cpu가 데이터를 처리 연산장치 cpu(central processing unit) 기억장치 주기억장치 rom(read only memory) : 비휘발성 ram(random access memory) : 휘발성 보조기억장치 HDD(hard disk driver) : 물리적인 디스크를 회전시켜 데이터를 저장 SSD(solid state driver) : 전기적으로 데이터를 저장 캐시와 레지스터 캐시 : cpu와 별도로 존재해 메인 메모리와 cpu 간의 속도 차이를 극복하기 위한 공간 -> cpu가 필요할 데이터를 미리 가지고 있음(예측) ※ 이로 인해서 Meltdown, Spectre와 같은 공격이 생김 -> 어떤 데이터를 요청했을 때..
2023.12.15