in su jeong
@insujeong4964226
수강평 작성수
-
평균평점
-
블로그
전체 4![[미션] 인프런 워밍업 클럽 2기 CS - 2주차](https://cdn.inflearn.com/public/main/blog/default_thumbnail.png?w=260)
2024. 10. 13.
1
[미션] 인프런 워밍업 클럽 2기 CS - 2주차
운영체제1. FIFO 스케줄링의 장단점이 뭔가요?First in First Out의 스케줄링의 단점은 먼저 온 작업이 먼저 처리되기 때문에 긴급한 작업이 중간에 들어와도 앞에 있는 모든 작업이 끝난후에 실행된다는 단점이 존재한다.2. SJF를 사용하기 여러운 이유가 뭔가요?최소작업 우선 스케줄링은 짧은 작업들이 계속 들어오면 긴 작업들은 실행할 기회를 얻지 못하고 순서에서 밀리게 된다.3. RR 스케줄링에서 타임 슬라이스가 아주 작으면 어떤 문제가 발생할까요?Context Switching 에 사용이 많이 되어서 overhead가 그만큼 커진다. 4. 운영체제가 MLFQ에서 CPU Bound Process와 I/O Bound Process를 어떻게 구분할까요?작업에 주어진 타임슬라이스를 기준으로 프로세스의 작업 시간이 많아지면 CPU Bound , 적다면 I/O Bound로 판단5. 공유자원이란무엇인가요?여러 프로세스간에 공유할 수 있는 자원을 공유자원이라고 한다. 6. 교착상태에 빠질 수 있는 조건은 어떤 것들을 충족해야할까요?상호배제비선점점유와 대기원형대기 자료구조와 알고리즘1. 재귀함수에서 기저조건을 만들지 않거나 잘못 설정했을 때 어떤 문제가 발생할 수 있나요?무한 루프에 빠질 수 있다.2. 0부터 입력 n까지 홀수의 합을 더하는 재귀 함수를 만들어보세요.```jsfunction sumOdd(n){ // 재귀 로직 if n == 0 { return 0; } if (n % 2) == 1 { return n + sumOdd(n-1); } else { return sumOdd(n - 1); }} console.log(sumOdd(10)) // 25```

2024. 10. 13.
1
인프런 워밍업 클럽 스터디 2기 CS 2주차 발자국
인프런 워밍업 클럽 스터디 2기 CS 2주차 발자국CPU 스캐줄링 프로세스 동기화임계 구역, 경쟁 조건상호배제세마포어wait와 signal을 사용하여 공유 자원 관리상호 배제 매커니즘프로그래밍 언어에서 지원하는 방법ex ) java에서는 synchronized 사용 이를 사용하면 동시에 여러 프로세스에서 사용할때 상호 배제 데드락공유자원 때문에 교착상태가 일어난다.교착상태를 설명하는 유명한 예시 : 식사하는 철학자교착상태의 필요조건상호배제비선점점유와 대기원형 대기데드락 해결 방법교착상태 회피프로세스들에게 자원을 할당할 때 어느 정도 자원을 할당해야 교착상태가 발생하는지 파악해서 교착 상태가 발생하지 않는 수준의 자원을 할당합니다.전체 자원 수와 할당된 자원의 수로 안정 상태와 불안성 상태로 나눌 수 있다.운영체제는 자기의 가용 가능한 자원을 알고 있어야한다. -> 총자원 프로세스의 최대 요구 자원안정 상태불안정 상태요청이 예상되는 자원 2개를 충족하지 못한다.모든 프로세스가 최대 자원을 요구하지 않는다면 불안정 상태에 빠지지 않을 수 있지만 불안정상태에 빠지지 않도록 유지하는게 좋다. 교착상태를 해결하는 방법가벼운 교착상태 검출타이머를 이용하는 방법프로세스가 일정 시간동안 작업이 이루어지지 않는다면 교착상태가 발생했다고 간주하고 교착상태를 해결교착상태를 해결하는 방법-> 일정 시점마다 체크포인트를 만들어 교착상태를 확인하고 타임아웃으로 교착상태를 알아냈다면 마지막으로 저장했던 상태로 롤백하는 것이다. 무거운 교착상태 방법자원 할당 그래프를 사용자원 할당 그래프를 이용하는데 현재 운영체제에서 프로스세가 어떤 자원을 사용하는지 지켜보고 교착상태가 발생했다면 해결합니다.이 방식은 운영체제가 지속적으로 자원할당 그래프를 유지하고 검사해야하기 때문에 오버헤드가 발생, 하지만 가벼운 교착상태 검출에서 발생할 수 있는 억울 하게 종료되는 프로세스는 발생하지 않음 컴파일과 프로세스컴파일 언어와 인터프리터 언어 2개로 이루어져 있다.컴파일은 컴파일 과정에서 개발자가 오류를 일으켰는지 검사하고인터프리턴는 한줄 한줄 번역하여 실행한다. 프로세스 메모리 구조 복습code - 실행해야 할 코드가 들어가는 영역data - 전역 변수나 배열이 들어가는 영역프로세스가 실행될 때 할당되는 메모리stack - 지역변수와 함수 관련 값들이 들어간다.heap - 실행중에 메모리 공간을 할당할 수 있는 유동적인 공간 컴파일 과정컴파일러를 실생시키려면 전처리 단계를 거친다.전처리 구문 처리#include와 #define 이 있다. 코드의 주석은 제거된다. 전처리기를 거친 이 파일은 컴파일러가 처리합니다. 컴파일러는 어셈블리어로 바꿔준다. 어셈블러는 어셈블리어를 기계어로 바꿔준다.오브젝트 파일로 만들고 오브젝트는 코드영역과 데이터 영역으로 나누어져 잇다. 이 오프젝트 파일이 실행되기 위해서는 링커를 거쳐야한다. 링커모든 파일을 하나의 코드 영역과 데이터 영역으로 묶는다. 운영체제는 exe 파일 안에 있는 데이터 영역과 코드 영역을 프로세스의 코드 영여과 데이터 영역에 넣어주고 빈 상태의 스택과 힙을 할당, 그리고 PCB를 만들어 관리가 가능하도록 만들고 PC(Program Counter)에 다음 실행할 명령어의 주소를 생성한 프로세스의 코드 영역의 첫번째 주소로 설정
![[미션] 인프런 워밍업 클럽 2기 CS - 1주차](https://cdn.inflearn.com/public/main/blog/default_thumbnail.png?w=260)
2024. 10. 06.
0
[미션] 인프런 워밍업 클럽 2기 CS - 1주차
운영체제 1. while(true){ wait(1); // 1초 멈춤 bool isActivated = checkSkillActivated(); // 체크 } 위 코드는 1초 마다 플레이어가 스킬을 사용했는지 체크하는 코드입니다. 이 방식은 폴링방식입니다. 1초마다 체크하기 때문에 성능에 좋지 않습니다. 이를 해결하기 위한 방식으로 어떤 걸 이용해야 할까요? 인터럽트를 사용 프로그램과 프로세스가 어떻게 다른가요? 프로그램은 실행 파일의 형태, 하드디스크에 존재프로세스는 실제로 실행중인 프로그램 멀티프로그래밍과 멀티프로세싱이 어떻게 다른가요? 멀티 프로그래밍은 메모리에 여러 프로그램들이 올라가 있는 것멀티 프로세싱은 시분할을 사용하여 프로세스간의 전환을 하며 동작하는 것을 의미 운영체제는 프로세스를 관리하기 위해서 어떤 것을 사용하나요?PCB를 사용 컨텍스트 스위칭이란 뭔가요?메모리에 올려진 프로세스간의 전환을 위해 사용하는 방법 자료구조와 알고리즘 여러분은 교실의 학생 정보를 저장하고 열람할 수 있는 관리 프로그램을 개발하려고 합니다.hashMap, 혹은 Dict 자료형 Key Value를 사용하는 자료구조를 사용한다면 빠르게 학생 정보를 열람할 수 있도록 구현할 수 있다. 여러분은 고객의 주문을 받는 프로그램을 개발하려고 합니다. 주문은 들어온 순서대로 처리됩니다. 이 때 여러분이라면 어떤 자료구조를 선택하실 건가요? 이유를 함께 적어주세요.Queue를 사용 First In First Out 구조가 필요하기 때문이다.

2024. 10. 06.
2
인프런 워밍업 클럽 스터디 2기 CS 1주차 발자국
운영체제컴퓨터의 역사애니악(진공관) -> 1950년도 초 (집적회로 개발) -> 1950년도 중후반(싱글 스트림 배치 시스템) -> 1960년도 (시분할 시스템) -> 1970년도 (개인 컴퓨터의 시작) 컴퓨터의 CPU 가격이 비쌌기 때문에 CPU 사용률을 끌어 올리는 쪽으로 발전 시분할 시스템메모리에 여러 프로그램을 올려놓고 시간을 나누어서 빠르게 돌아가며니서 실행을 시킨다.이 작업의 장점은 하나의 프로그램이 입력을 대기 중이더라도 다른 프로그램이 작업 중이기 때문에 CPU의 사용률이 결과적으로 올라가는 장점을 가지게 된다. Unix멀티 프로그래밍다중 사용자파일 시스템 문제점메모리에 여러 프로그램을 올려서 사용하기 때문에 메모리 침범 문제가 생겼다. 운영체제의 구조커널이 핵심프로세스와 메모리, 저장장치를 관리 핵심적인 기능을 담당 사용자는 커널에 직접 접근할 수 없고 인터페이스를 통해 접근할 수 있다.인터페이스 -> GUI, CLI 어플리케이션은 시스템 콜을 통해서 커널에 접근할 수 있다.커널은 사용자로부터 자신을 보호하기 위한 시스템 콜이라는 인터페이스를 가지고 있다. 컴퓨터 하드웨어와 구조하드웨어는 프로그램 내장 방식의 폰 노이만 구조를 하고 있다.폰노이만 구조예전에는 하드웨어로 프로그램을 만들었기 때문에 프로그램이 달라질 때마다 매번 스위치와 배선을 다시 조정해야했다.이를 해결하기 위해 CPU와 Memory를 두고 이들 사이를 BUS로 연결 데이터를 전달하는 통로를 말한다.프로그램을 메모리에 내장 : 프로그램 내장 방식이라고 호칭 메인보드다른 하드웨어간의 연결을 담당 CPU중앙 처리 장치라고 부른다.ALU 산술 논리 연산장치 : CPU에서 실제로 데이터 연산을 담당한다.Contorl Unit 제어 장치: 모든 장치들의 동작을 지시하고 제어하는 장치Register 레지스터: CPU내에서 계산을 위해 임시로 보관하는 장치 메모리의 종류RAM, ROMRAM : Ramdom Access Memory 전력이 끊기면 데이터를 잃어버린다. 메인 메모리로 사용된다.ROM : Read Only Memory 전력이 끊겨도 데이터를 계속 보관할 수 있다. 데이터를 한 번 쓰면 수정이 불가능 -> 컴퓨터 부팅과 관련된 바이오스를 저장하는데 사용된다. 컴퓨터의 부팅 과정ROM에 저잦ㅇ된 바이오스가 실행된다주요 하드웨어 이상이 없는지 체크이상이 없다면 마스트 부트 레코드에 저장된 Boot Loader를 메모리로 가져와서 실행합니다. 인터럽트CPU가 입출력 장치에 읽거나 쓰려고 하는 상황CPU는 입출력 작업이 들어오면 입출력 관리자에 명령, CPU는 주기적으로 입출력 관리자를 확인polling 방식주기적으로 CPU가 확인해 줘야하니 성능이 좋지 않다는 단점이 있다.인터럽트는 폴링 방식의 단점을 해결한 방식-> CPU가 입출력 관리자에 명령 -> 입출력 관리자는 입출력이 완료됬을 때 CPU에게 신호를 주고 CPU는 그 신호를 받아서 -> 인터럽트 서비스 루틴을 실행해서 작업 완료 프로세스와 쓰레드프로그램은 컴퓨터 관점에서 하드디스크, 즉 저장장치만 사용하는 수동적 존재프로세스: 실행중인 프로그램 프로세스는 메모리도 사용하고 운영체제의 CPU 스케줄링 알고리즘에 따라 CPU도 사용하고 필요에 따라 입력과 출력을 하기 때문에 능동적인 존재라고 말 할 수 있다. 프로세스의 구조 Code 영역: 자신을 실행하는 코드가 저장Data 영역 : 자신을 실행하는 코드 저장, 전역 변수와 Static(정적) 변수가 저장되어 있습니다.스택 영역 : 지역 변수와 함수 호출을 했을 때 필요한 정보들이 저장된다.Heap 영역: 프로그래머가 런타임시 할당할 수 있는 메모리 공간 유닛 프로그래밍 : 오직 하나의 프로세스가 올라간 것멀티 프로그래밍 : 메모리에 여러 개의 프로세스가 올라온 것멀티 프로세싱 : CPU관점으로 정의, CPU가 여러 개의 프로세스를 처리하는 것PCB(Process Control Block)프로그램이 메모리에 올라가서 실행 중인 상태를 프로세스운영체제는 여러 프로세스를 전부 다 관리하고 공평하게 실행 시켜야 한다.PCB(Process Control Block)을 만들고 저장합니다.PCB들은 연결 리스트라는 자료구조로 저장됩니다. 운영체제는 프로세스가 종료되면 해당 프로세스의 PCB 제거 프로세스 상태생성 : 메모리에 프로그램 적재를 요청준비 : CPU를 사용하기 위해 기다리고 있는 상태실행 : CPU 스케줄러에 의해 실행대기 : 입출력 요청을 하면 입출력이 완료될 때까지 기다리는 상태완료 : 프로세스가 종료된 상태Context Switching프로세스를 실행하는 중에 실행중인 프로세스의 값을 저장하고 다른 프로세스의 상태 값으로 교체하는 과정 프로세스 생성과 종료운영체제가 시작되고 0번 프로세스를 1번 생성하게 되고 나머지 모든 프로세스는 0번 프로세스를 복사해서 쓰게 된다.부모를 복사한 자식 프로세스의 코드와 데이터 영역을 원하는 값으로 덮어서 쓰게 된다. 쓰레드프로세스는 독립적 다른 프로세스가 영향을 받지 않는다.프로세스간의 통신은 IPC 통신 사용쓰레드 간의 통신은 같은 프로세서의 데이터를 공유할 수 있다. CPU 스케줄링컴퓨터 자원 분배에 관한 문제를 해결하기 위한 방법 CPU를 할당받아 실행하는 작업을 CPU Burst, 입출력 작업을 IO Burst 라고 한다. 다중 큐CPU 스케줄러는 준비상태에서 다중 큐에 들어 있는 프로세스들 중에 적당한 프로세스를 선택해서 실행상태로 전환 프로세스 정보를 담고 있는 PCB는 준비 상태의 다중 큐에 들어가서 실행되기를 기다리고 있고 CPU 스캐줄러에 의해 실행상태로 전환됩니다. 스케줄링의 목표리소스 사용오버헤드 최소화공평성 - 모든 프로세스에게 공평하게 CPU가 할당 되어야한다.처리량대기 시간 - 작업을 요청하고 실제 작업이 이루어지는데까지 대기시간이 짧는 것을 목표로응답시간 FIFOFirst in First out스케줄링 큐에 들어온 순서대로 실행하는 방식 SJFShortest Job FirstBurst Time이 짧은 프로세스를 먼저 실행 RRround robin 방식강제로 다른 프로세스에게 일정 시간을 할당정해진 시간만큼 동작 MLFQMulti Level Feedback Queue여러개의 큐가 존재, 큐들은 우선 순위가 존재




