[운영체제] 프로그램 실행 과정
·
⚙️ CS/운영체제
✅ 프로그램 실행 과정프로그램을 실행시키기 위해서는 크게 컴파일 - 링킹 - 로더 과정을 거쳐야 한다. C언어로 예를 들 때, 프로그램 실행 과정은 다음과 같다. 1️⃣ 컴파일: 소스 코드를 기계어 코드로 변환 개발자가 사용하는 C, JAVA 같은 프로그래밍 언어는 고급 언어라고 할 수 있다.하지만 컴퓨터가 이해하는 언어는 기계 언어이다.따라서 개발자가 작성한 코드를 컴퓨터가 실행하기 위해서는 컴퓨터가 이해 가능한 기계어로 바꿔줘야 한다. 이때 고급 언어로 작성한 파일은 소스 파일이고, 이를 컴파일하면 기계어 코드로 작성된 오브젝트 파일이 나오게 된다. 2️⃣ 링킹: 링커가 오브젝트 파일을 하나의 바이너리 실행 파일로 결합 컴파일을 통해 생성된 오브젝트 파일 자체로는 프로그램을 실행시킬 수 없다...
[운영체제] 동기화
·
⚙️ CS/운영체제
✅ 경쟁 상태 (Race Condition): 여러 프로세스나 스레드가 동시에 공유 데이터에 접근할 때, 수행 순서에 따라 실행 결과가 달라질 수 있는 상황 경쟁 상태는 공유 자원에 대한 접근을 적절히 통제하지 못할 때 발생하는 문제이다.예상치 못한 실행 순서 때문에 데이터 불일치나 프로그램 오류가 발생할 수 있다. ✅ Thread Safe: 여러 스레드가 동시에 같은 자원에 접근해도 프로그램 실행 결과가 올바르게 나오는 상태 여러 스레드가 함께 실행되더라도 데이터가 손상되지 않고, 예상한 대로 정확하게 동작하는 프로그램을 Thread Safe 하다고 한다.즉, 여러 스레드가 Race Condition에 들어가더라도 연산 결과는 정합성이 보장될 수 있도록 메모리 가시성이 확보된 상태이다. 메모리 가시..
[운영체제] 스케줄링
·
⚙️ CS/운영체제
✅ 멀티프로그래밍 프로세스의 실행은 CPU burst와 I/O burst의 반복이라고 볼 수 있다.CPU burst: 프로세스가 CPU를 사용해 연산 작업을 수행I/O burst: CPU가 입출력 작업을 기다림 만약 I/O 작업이 진행되는 동안 CPU가 해당 프로세스의 완료를 기다리기만 한다면, 이 시간 동안 CPU는 아무 일도 하지 않고 낭비된다. 이러한 비효율을 줄이기 위해 운영체제는 CPU를 항상 바쁘게 유지하려고 한다.즉, 어떤 프로세스가 I/O 요청으로 대기 상태에 들어가면 CPU는 즉시 다른 준비된 프로세스에게 할당된다. 이렇게 CPU를 효율적으로 사용하기 위해 여러 프로세스를 메모리에 올려두고, 실행 가능한 프로세스끼리 번갈아가며 CPU를 사용하는 방식을 멀티프로그래밍(multiprogram..
[운영체제] 스레드
·
⚙️ CS/운영체제
✅ 스레드 (Thread): 실행 흐름 단위 스레드는 다음과 같이 2가지로 나눌 수 있다.하드웨어적 스레드: CPU에서 사용소프트웨어적 스레드: 프로그램에서 사용📍 하드웨어적 스레드: 하나의 코어가 동시에 처리하는 명령어 단위 1 코어 1 스레드: 한 번에 하나씩 명령어를 실행하는 CPU2 코어 4 스레드: 한 번에 4개의 명령어 처리가 가능한 CPU, 한 코어당 2개의 하드웨어 스레드를 처리 이처럼 하나의 코어로 여러 명령어를 동시에 처리하는 CPU를 멀티스레드 프로세서(멀티스레드 CPU)라고 한다. 📍 소프트웨어적 스레드: 하나의 프로그램에서 독립적으로 실행되는 단위 보통 프로그래밍 언어나 운영체제에서 언급되는 스레드는 소프트웨어적 스레드이다.즉, 흔히 말하는 프로세스 안에서 실행되는 흐름 단위는..
[운영체제] 프로세스
·
⚙️ CS/운영체제
✅ 프로세스 (Process): 메모리 상에서 실행 중인 프로그램 디스크에 저장된 정적인 명령어 집합인 프로그램이 실행되면, 운영체제는 이에 필요한 자원을 할당하고 메모리에 적재한다.이 시점부터 프로세스라고 부르는 것이다. 만약 동일한 프로그램을 여러 번 실행하면, 각각 다른 프로세스가 생성된다. - 프로그램: 정적인 코드- 프로세스: 실행 중인 프로그램- 스레드: 프로세스 내 작업 단위✅ 프로세스의 상태 New: 생성 중인 상태Running: 실제로 CPU에서 실행되고 있는 상태Waiting(Blocked): 이벤트가 완료되길 기다리는 상태Ready: 프로세스가 실행될 준비는 되어 있지만, 아직 CPU를 배정받지 못한 상태Terminate: 실행이 완료되어 종료된 상태Suspended: 메모리 부족 등..
[운영체제] 시스템 콜 & 인터럽트
·
⚙️ CS/운영체제
✅ 운영체제(Operating System): 사용자가 컴퓨터를 편리하게 사용할 수 있도록 환경을 제공하는 시스템 소프트웨어 운영체제는 유저 프로그램과 하드웨어 사이에 위치하여 프로그램이 실행될 수 있는 환경을 제공한다. 대표적인 기능은 다음과 같다.사용자 인터페이스 제공그래픽 사용자 인터페이스(GUI): 윈도우 바탕화면처럼 그래픽을 기반으로 컴퓨터와 상호작용하는 인터페이스커맨드 라인 인터페이스(CLI): 명령어를 기반으로 컴퓨터와 상호작용하는 인터페이스GUI는 없고 CUI만 있는 리눅스 서버도 있다.프로그램 실행: 시스템은 프로그램을 메모리 적재해 실행할 수 있어야 한다.입출력 연산: 프로그램이 입출력을 요구하면 운영체제가 이에 대한 수단을 사용자에게 제공해야 한다.파일 시스템 조작: 프로그램에서 파..
[JSCODE] 네트워크 모의면접 회고
·
카테고리 없음
🗓️ 활동 내용3월 14일 ~ 4월 11일 (5주)매주 면접 예상 질문을 바탕으로 공부하고, 그 내용을 블로그에 기록합니다.스터디 당일에는 4~5명이 한 팀을 이루어 모의면접을 진행합니다.각자 지원자, 면접관, 관찰자(타임키퍼) 역할을 번갈아 맡습니다.모의면접은 지원자 한 명당 15분 + 피드백 5분으로 총 20분 진행됩니다. 🎯 모의면접을 신청하고 시작하게 된 계기처음 모의면접에 관심을 가지게 된 계기는 여러 블로그에서 본 회고 후기들이었습니다.CS 공부는 혼자서도 할 수 있지만, 이를 말로 잘 표현하는 연습이 필요하다고 느끼던 차에 JSCODE 모의면접에 대한 후기가 특히 많더라고요. 또한, 예전에 다른 스터디에서 함께 했던 팀원분이 이 프로그램에 대해 언급했던 기억도 떠올랐습니다. 결국, 강제..
[네트워크] IP 주소 & 서브넷
·
⚙️ CS/네트워크
✅ IP 주소 (Internet Protocol): 네트워크에서 호스트와 라우터의 각 인터페이스마다 할당되어 있는 식별번호 IP(Internet Protocol)는 네트워크 계층에 위치하는 프로토콜이다.그리고 이 IP 통신을 하기 위해 각 기기들을 구분하는 고유번호가 바로 IP 주소이다. IP주소는 네트워크 주소와 호스트 주소로 나뉜다. 인터페이스: 호스트와 물리 링크 사이의 경계 ✅ IPv4 : 32비트로 이루어진 IP주소 IPv4는 4개의 8bit(0~255)로 이루어져 있습니다. 이 4개의 수는 점(.)으로 구분된다.ex) `192.169.12.1` 32비트로 이루어져 있기 때문에 2^32 = 약 42억 개의 서로 다른 주소를 부여할 수 있다.1 byte = 8 bit = 1 octet(옥텟)..