본문 바로가기

반응형

전체 글

(126)
동기화, 경쟁 조건(Race Condition), 임계 구역(Critical Section) [ 운영체제(OS) 면접질문 5] WHY 동기화 이슈는 상당히 중요한 주제이다. 병행성과 관련해서 공유되는 자원에 대한 이해와 공유자원 사용과 관련해서 생길 수 있는 문제 상황을 이해하는지 물어보기 좋은 질문! 병행성과 병렬성에 대한 이해가 있고 공유 자원에 대한 동시 접근으로 인해서 생길 수 있는 문제를 이해했는지 답변을 잘했다면 이슈를 해결하기 위한 방법들(락, 뮤텍스, 세마포어, 교착상태 등등)의 질문으로 나아갈 수 있다고 생각한다. 해당 글에서는 동기화가 필요한 배경(병행성 & 병렬성), 동기화란 무엇이고 이와 관련된 핵심 개념은 무엇인지 살펴본다. 멀티 프로세서 환경, 시분할 스케줄링. => 병행성 + 병렬성 현대의 운영체제는 병행성(시분할 스케줄링(OS))와 병렬성(다중 코어)을 제공해주고 있다. 이 덕에 컴퓨터 사용자들은 많..
CPU 스케줄링 알고리즘 [ 운영체제(OS) 면접 질문 4] WHY 면접 질문 3에서 프로세스의 상태와 CPU 스케줄러의 역할을 살펴보았다. 이번 질문은 CPU 스케줄링의 알고리즘을 물어보면서 선점형, 비선점형, 우선순위의 관점에서 스케줄링 기법을 이해하는지 물어보는 것이다. 어떤 기준으로 CPU 스케줄링을 선택해야 하는지 사용자와 시스템 관점에서 어떤 기준을 선호하게 되는지 선점형 방식과 비선점형 방식의 기존 스케줄링의 단점과 보완점 우선순위 스케줄링 방식을 통해 프로세스의 운영방식을 이해했는지를 살펴볼 수 있는 좋은 질문이라고 생각한다. 따로 해당 질문을 받은 경험이 없다. 스케줄링 알고리즘의 평가 기준들 CPU 사용률(Utilization) 전체 시스템 시간 중에서 CPU가 작업을 처리하는 시간의 비율이다. 유휴 시간이 적을수록 CPU 사용률이 높다. CPU..
CPU 스케줄링 & 선점형, 비선점형 스케줄링 [ 운영체제(OS) 면접 질문 3] 스케줄(Schedule) 우리는 시간에 따라 세운 계획을 표현할 때 "일정, 계획, 시간표, 스케줄" 등등의 단어를 사용한다. CPU 스케줄링은 위의 정의를 그대로 사용한다. "시간"이라는 자원 아래에서 CPU가 처리할 작업들의 일정과 계획을 세우는 것이다. 어떤 프로세스를 실행시켜야 하는지는 CPU 스케줄러에 달려있다. 어떤 목적과 어떤 정책을 중점으로 CPU 스케줄러를 운영해야 하는지를 살펴본다. CPU 스케줄링 작업(스레드)의 형편성과 효율성을 결정하는 중요한 일을 한다. 어떤 작업에 CPU를 배정할지 결정하는 것이다. CPU 스케줄러는 프로세스의 "생성"부터 "종료"까지 모든 상태 변화를 "조정"한다. CPU 스케줄링의 목적 1. 공평성 - 모든 프로세스가 자원을 공평하게 배정받아야 한다. 자원 ..
멀티프로세싱(multiprocessing)과 멀티스레딩(multithreading)의 차이점 [ 운영체제(OS) 면접질문 2] why OS 관련 단골 질문 중 하나이다. 프로세스와 스레드의 차이점을 물어본 후에 깊게 들어올 수 있는 질문이라고 생각한다. 둘 다 컴퓨팅의 효율성을 위한 기법[병렬 처리]이다. 멀티 프로세싱은 OS의 관점에서 프로세스를 여러개 운영하는 방법이고 멀티 스레딩은 하나의 프로세스에서 내부 기능을 동시에 실행시키는 방법이다. 현대의 하드웨어는 다중 CPU, 다중 코어를 지원하기에 병렬 처리와 관련된 지식은 상당히 중요하다. 배경 면접질문1에서는 스레드와 프로세스의 차이점을 살펴보았다. 스레드는 프로세스에 속하는 단위로 프로세스는 하나이상의 스레드를 소유한다. 그리고 CPU는 스레드 단위로 작업을 처리한다. 현대의 프로그램은 많은 기능들을 제공해줘야 한다. 네트워크를 사용하고, 하드디스크에서 파일을 읽어오고,..
프로세스(Process)와 스레드(Thread)의 차이점. [ 운영체제(OS) 면접 질문 1] Why 운영체제 관련 면접 질문으로 첫 번째로 물어볼 수 있는 질문이다. 프로세스라는 개념은 상당히 중요한데 OS의 관점에서 하나의 "작업"단위가 되기 때문이다. 프로세스와 관련된 정보(혹은 정책)들만으로도 다른 면접 질문으로 빠르게 뻗어나갈 수 있다. 1. 프로세스의 상태 2. CPU 스케줄링 정책 3. 스레드 4. 멀티 프로세스와 멀티 스레드 5. 프로세스에 대한 세부적인 정보(PCB) 6. 컨텍스트 스위칭 등등 등등.. 그렇기에 해당 질문을 통해 프로세스가 무엇인지, 스레드는 무엇인지 잘 설명할 수 있어야 한다. 해당 질문에 아쉬운 답변을 한다면 OS 파트에서 더 이상의 질문이 들어오지 않고 다음 섹션(프로그래밍, 네트워크, 보안, DB 등등으로 넘어가게 될 수 있다.) 나의 답변 프로세스와 스레드..
프로시저(procedure) 함수(function) 메서드(method)의 차이점 [프로그래밍 면접 질문 1] why 크게 중요한 질문은 아닐 수 있다. "기능"과 관련해서 같은 의미를 가지는게 아닌가? 싶은 용어들이다. 3개의 용어가 비슷비슷하게 사용되는 것 같지만 맥락에 따라서 다르게 사용된다. 3가지 용어를 어떤 관점에서 구분하는지에 대해서 물어볼 수 있는 좋은 질문이라 생각한다. [ 다만 중요성은 낮다고 생각하는 편 ] Subprogram & Subroutine 세 가지 용어 모두 "프로그램의 일부"라는 개념에서 묶어낼 수 있다. 시스템을 구성하는 일부의 로직을 의미하는 것이다. 시스템의 작은 기능이라는 관점에서 보면 3가지 용어 모두 같지만 기능이 가지는 특성들로 파악하면 3가지 용어 모두 다르게 사용될 수 있다. 서브 프로그램, 서브루틴, 자료구조 등등은 복잡한 문제를 해결하기 위해 더 작은 문제로 분..
this에 대하여... [ java & OOP 면접질문 2] why this는 객체지향 개발론 언어인 Java의 중요한 키워드 중 하나이다. 자바 스크립트에서의 단골 질문으로 뽑히는 키워드인데 개인적으로 java에서도 꽤나 중요한 키워드라 생각한다. 면접 질문으로 나오는 비중은 적지만 클래스 내에서의 활용성이 높기에 뽑아보았다. this와 this()의 차이점이 무엇인지로 질문을 할 수 있다. [ 깊게 들어가면 JVM까지도 접근하게 될 수 있다. ] this란 : 메서드와 생성자에서 현재 객체를 가리킨다. [3가지 용도] this는 자기 자신(클래스 혹은 객체)을 가리킨다. 객체의 경우 인스턴스 자신을 가리키는 참조 변수로 인스턴스의 주소(heap 메모리) 참조로 저장된다. 생성자와 메서드는 자기 자신을 가리키는 변수를 가지는데 이러한 숨겨진 성질로 인해서 thi..
클래스(class), 객체(Object), 인스턴스(Instance)의 차이점. [ Java & OOP 면접 질문1] Why 대부분의 시스템이 객체지향 개발론을 통해 개발된다. 그 이유는 복잡성을 제어하면서 유지보수성을 높여야 하기 때문이다. 유지보수성을 왜 높여야 할까? 그 이유는 소프트웨어를 다루는 프로그래머의 가치가 컴퓨터의 가치보다 높기 때문이다. 기존의 시스템을 이해하고 수정 및 확장하기가 쉬울수록 해당 시스템에 들어가는 유지보수 비용이 낮게 측정된다. OOP는 비즈니스의 관점에서 보면 프로그래머로 하여금 비용 효율적으로 시스템을 개발하게 해주는 방법이다. OOP는 유지보수성을 위해서 기존의 개발 패러다임(절차지향 패러다임)에서 한 단계 발전한 패러다임이다. 객체지향 개발론에도 절차지향적인 부분이 존재하지만 "객체"를 중심으로 사고해야 한다는 점에서 기존의 절차지향적인 개발 방법론과는 다른 사고방식으로 이끌어준..

반응형