IT 시사 및 CS 지식
[CS스터디]220802 운영체제 - 6
프로세스 관련 용어를 설명해보세요. (알아만 둡시다.) PCB(Process Control Block) 운영체제가 프로세스를 제어하기 위해 정보를 저장해놓는 곳. 프로세스의 상태 정보를 저장하는 구조체 프로세스 상태 관리와 문맥 교환(Context Switching)을 위해 필요하다. PCB는 프로스세 생성 시 만들어지며 주기억장치에 유지된다. 운영체제라는 것은 결국 하드웨어가 효율적으로 동작할 수 있도록 관리해주는 소프트웨어 프로그램임. 그니까 운영체제라는 프로그램이 프로세스를 하나 만들어서 실행을 하려면 그 프로세스와 관련된 데이터 구조가 있어야 하고, 그 것이 바로 PCB임! PC(Program Counter) 프로세스 내부에 있는 레지스터 중의 하나 중앙처리장치 내부에 포함된 레지스터 중에 하나로..
[CS스터디]220728 운영체제 - 5
가상 메모리(Virtual Memory System)에 대해 설명해보세요. 메모리가 실제 메모리보다 많아 보이게 하는 기술로, 어떤 프로세스가 실행될 때 메모리에 해당 프로세스 전체가 올라가지 않더라도 실행이 가능하다는 점에 착안하여 고안되었음 메모리를 관리하는 방법의 하나로, 각 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 주는 방식을 말한다. 이러한 방식은 멀티태스킹 운영 체제에서 흔히 사용되며, 실제 주기억장치(RAM)보다 큰 메모리 영역을 제공하는 방법으로 사용된다. 이 가상 메모리의 핵심은 필요한 부분만 메모리에 적재(부분적재)하는 것! 프로세스를 실행할 때, 실행에 필요한 부분만 메모리에 올림(적재 여부를 페이지 테이블에 표시) 세마포어와 뮤텍스의 차이에 대해 설명해보세요. 세마포..
[CS스터디]220726 운영체제 - 4
교착 상태가 무엇인지 설명해주세요. 다중 프로그래밍 환경에서 여러 프로세스가 제한된 resource 를 두고 경쟁하는 경우 발생하고 프로세스가 결코 일어날 수 없는 특정 이벤트를 무한정으로 기다리는 상태 교착 상태에서 기아 상태의 해결 방법에 대해 설명해보세요. 교착 상태 교착 상태는 여러 프로세스가 동일 자원 점유를 요청할 때 발생 기아 상태 기아 상태는 여러 프로세스가 부족한 자원을 점유하기 위해 경쟁할 때, 특정 프로세스는 영원히 자원 할당이 안되는 경우를 주로 의미함 프로세스가 작업을 수행하지 못하고 무한히 기다리는 상태 현실적으로 수행할 수 있는 작업이지만, 무기한 연기로 인해 수행할 수 없는 상태에 빠지는 것. 프로세스의 우선순위에 따라 자원을 할당할 경우, 우선순위가 낮은 프로세스들은 기아 ..
[CS스터디]220725 운영체제 - 3
Thread-safe 하다는 의미와 설계하는 법을 설명해보세요. Thread-safe란? 위키에서 Thread-Safe는 스레드 안전(thread 安全, 영어: thread safety)은 멀티 스레드 프로그래밍에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없음을 뜻한다. 보다 엄밀하게는 하나의 함수가 한 스레드로부터 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하여 동시에 함께 실행되더라도 각 스레드에서의 함수의 수행 결과가 올바로 나오는 것으로 정의한다. 라고 나와있다. 앞선 스터디에서 알게 되었듯이 스레드는 프로세스와 다르게 하나의 프로세스 안에서 여러 스레드가 같은 자원에 접근할 수 있고, 그 자원을 공유하며 작업(Ta..
[CS스터디]220722 운영체제 - 2
동기와 비동기의 차이(블로킹, 넌블로킹) / 장단점에 대해 설명해보세요. 동기 Synchronous 순차적, 직렬적으로 작업(task)을 수행 어떤 작업이 수행 중이면 다음 작업은 그 작업이 끝날 때까지 대기해야 함! 요청에 대한 결과가 동시에 일어남! 장점 설계가 매우 간단하고 직관적 단점 결과가 주어질 때까지 아무것도 못하고 대기해야 함 비동기 Asynchronous 병렬적으로 작업(task)를 수행 요청을 한 후 응답을 기다리지 않고 바로 다음 작업을 수행 요청에 대한 결과가 나중에 일어난다 ! 장점 요청에 따른 결과가 반환되는 시간동안 다른 작업 수행 가능 단점 동기식보다 설계가 복잡함 멀티스레드 프로그래밍에 대해 설명해보세요. 하나의 프로세스 내에서 여러 쓰레드가 동시에 작업을 수행하는 것 CP..
[CS스터디]220718 운영체제 - 1
프로세스와 스레드의 차이를 설명해보세요. Process(프로세스) 컴퓨터에서 실행되고 있는 컴퓨터 프로그램 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체) 운영체제로부터 시스템 자원을 할당받는 작업의 단위 프로세스끼리는 자원을 공유할 수 없음 Thread(스레드) 스레드는 프로세스 내에서 실행되는 여러 흐름의 단위 같은 프로세스 안에 있는 여러 스레드들은 같은 힙 공간을 공유함 자원을 공유할 수 있음 컨텍스트 스위칭에 대해 설명해보세요. CPU에서 여러 프로세스를 돌아가면서 작업을 처리하는 데 이 과정을 Context Switching라 한다. 구체적으로, 동작 중인 프로세스가 대기를 하면서 해당 프로세스의 상태(Context)를 보관하고, 대기하고 있던 다음 순서의 프로세스가 동작하면..
[CS스터디]220707 자료구조 - 3
BST의 최악의 경우의 예와 시간복잡도에 대해서 설명해주세요. 한쪽으로 몰리는 경우(계속해서 작은 수가 들어오는 경우, 계속해서 큰 수가 들어오는 경우)가 최악의 경우 평균적으로는 O(logN)인 시간 복잡도가 이 경우엔 O(N)으로 증가함! 피보나치 수열을 코드로 구현하는 방법에 대해서 설명해주세요. 재귀 or 동적 계획법(탑다운, 바텀업 방식이 있음) 재귀 단순한 재귀로 구현할 경우, 시간 복잡도가 너무 크게 나올 수 있기 때문에 동적 계획법을 활용하여 구현하는게 좋음 ! 동적 계획법 Top-Down 말 그대로 위에서 아래로 진행하면서 답을 구하는 방식, 흔히 재귀 호출을 이용해 구현. 100번째 피보나치 수를 찾기 위해 99번째, 98번째 수를 찾고, 그들을 찾기 위해 97번쨰, 96번째 수를 찾는..
[CS스터디]220705 자료구조 - 2
Stack, Queue에 대해서 설명해주세요. Stack LIFO(Last In First Out, 후입선출) push(), pop() 활용 예시 웹 브라우저 방문 기록 역순 문자열 만들기 실행 취소 후위 표기법 수식의 괄호 검사 등 Queue FIFO(First In First Out, 선입선출) offer(), poll() 활용 예시 우선순위가 같은 작업 예약(프린터의 인쇄 대기열) 은행 업무 콜센터 고객 대기시간 프로세스 관리 등 Heap, Priority Queue에 대해서 설명해주세요. Heap 완전 이진 트리(Complete Binary Tree)로 구성된 자료구조 모든 노드에 저장된 값들은 자식 노드들의 것보다 크거나 같다. 부모는 자식보다 항상 우선순위가 높다 그렇기 때문에 루트 노드가 항..