스터디 (6) 썸네일형 리스트형 JSCODE 운영체제 모의 면접 스터디 회고 스터디 참여 계기 이제 4년차 개발자가 된 나였지만, 비전공으로 시작해서 실무와 관련된 기술 위주로 계속 학습을 해왔던 나는 꾸준히 컴퓨터 공학 베이스 지식에 대한 필요성을 느끼고 있었다. 그 중에서도 특히 운영체제는 개발과 직접적으로 연관되는 부분이 많지가 않아 실무 중에서도 운영체제 개념을 찾아볼 일은 잘 없었고, 그래서 DB, Network, 자료구조/알고리즘 등에 비해 연차가 쌓여도 운영체제에 대한 이해도가 쌓이는 느낌은 없었기에 기회가 되면 한번 각잡고 공부를 해봐야겠다고 생각했다. 하지만 운영체제는 막연히 재미없고 어렵다라는 인식이 있었기 때문에 기왕 공부를 할 것이라면 스터디를 통해서 학습의 강제성도 어느 정도 부여하고 타인들과의 교류를 통해서 좀 더 재밌게 하고 싶었기 때문에 관련 스터디를.. 운영체제 스터디 5주차 메모리 관리(Memory Management) 운영체제에서 프로그램을 실행하면 해당 프로그램의 데이터는 메모리(RAM)에 로드된다. 이 때 메모리 공간은 한정적이기 때문에, 어떤 데이터를 메모리에 올릴지, 각 프로그램의 메모리 주소를 어떻게 구분할지, 어떤 프로그램에게 더 많은 공간을 줄지 등등 수많은 고려사항이 필요하다. 운영체제는 이러한 메모리 관리를 자동적으로 수행하는 다양한 기법을 갖고 있으며, 그 덕분에 사용자는 메모리에 신경을 쓰지 않고 편하게 컴퓨터를 이용할 수 있게 되는 것이다. 이러한 메모리 관리 기법에는 어떤 것들이 있는지 하나씩 알아보자. 주소바인딩 프로그램이 메모리에 적재되면 그 프로그램만의 독자적인 주소 공간이 생성된다. 이 주소 공간을 논리적 주소(logical address) .. 운영체제 스터디 4주차 프로세스 동기화 프로세스 동기화란 여러 프로세스가 동시에 같은 자원을 공유하며 실행될 때 자원의 일관성을 유지하는 기법을 의미한다. 여러 프로세스가 같은 자원을 공유하면 메모리를 효율적으로 사용할 수 있다는 장점이 있지만, 공유자원에 대한 삽입, 삭제, 수정 등의 작업이 일어나는 경우 각 프로세스들 간에 같은 자원을 서로 다르게 해석하는 문제(Race Condition)가 발생할 수 있으므로 동기화 작업은 필수라고 할 수 있다. 그리고 현대에는 프로세스간의 동기화 보다는 스레드간의 동기화가 더욱 활발하므로 스레드 동기화라고도 부른다. 경쟁 상태(Race Condition) 경쟁 상태란 여러 프로세스들이 동시에 공유 자원에 접근하는 상황에서, 어떤 순서로 접근하느냐에 따라 결과 값이 달라질 수 있는 상황을.. 운영체제 스터디 3주차 CPU 스케줄링 CPU 스케줄링은 CPU사용에 대한 권한을 여러 프로세스들에게 분배하여 효과적인 다중 프로그래밍을 구현할 수 있게 하는 기법이다. CPU 스케줄링의 목적은 CPU를 유휴 상태로 낭비하는 시간 없이 최대로 활용하여 다중 프로세스의 처리를 효율적으로 수행할 수 있도록 하는 것이다. 프로세스 스케줄링 과정 프로세스는 실행되면 종료되기 전까지 준비 상태, 실행 상태, 대기 상태를 전환하며 작업을 수행한다. 준비 상태 CPU를 할당 받기 위해 준비 큐에서 스케줄러의 선택을 기다리는 상태 준비 큐는 반드시 FIFO 입출력 구조가 아닌 알고리즘에 따라 여러 방식으로 구현된다 일반적으로 메모리에 적재되어 있고 실행 가능한 상태의 프로세스들이 준비 상태에 있는다. 실행 상태 CPU를 할당 받아 실제 코드.. 운영체제 스터디 2주차 프로그램, 프로세스, 스레드 1. 프로그램(Program)이란? 프로그램은 어떤 작업을 수행하기 위해 개발자가 프로그래밍 언어를 통해 작성한 코드들의 집합을 실행 가능한 형태로 변환해 디스크에 적재한 정적인 파일이다. 윈도우의 경우 우리가 익히 아는 .exe파일이 대표적이며, 자바의 빌드 파일인 jar나, 배치파일인 bat등도 프로그램으로 볼 수 있다. 또한 우리가 직접 실행하지는 않더라도 운영체제가 스스로 실행하는 여러 시스템 프로그램들도 존재한다. 프로그램의 실행 이런 프로그램을 실행한다는 것은 크게 두가지 의미를 갖는다. 첫째는 디스크에 존재하던 실행파일을 메모리에 적재한다는 의미이고, 둘째는 프로그램이 명령을 수행하기위해 CPU를 할당받는다는 뜻이다. 그리고 이렇게 실행되어 수행중인 단위를 프로세.. 운영체제 스터디 1주차 운영체제(OS, Operating System) 운영체제의 정의 운영체제란 컴퓨터 시스템의 자원들을 효율적으로 관리해주며, 사용자가 컴퓨터를 편하고 효율적으로 사용할 수 있는 환경을 제공하는 프로그램의 집합이다. 사용자와 하드웨어를 이어주는 일종의 인터페이스 역할을 한다. 운영체제의 역할 사용자를 위한 역할 OS는 사용자가 컴퓨터 시스템을 사용하기 편리하게 사용할 수 있도록 GUI, CLI와 같은 인터페이스를 제공한다. 하드웨어를 위한 역할 운영체제의 핵심적인 역할은 각종 하드웨어를 관리하는 역할인데, 크게 아래와 같이 세가지로 나눌 수 있다. 프로세스 관리 운영체제는 동시에 여러가지 프로그램이 실행된다. 하지만 CPU 코어 하나당 동시에 처리 가능한 연산은 하나의 프로세스 뿐이므로 수많은 프로세스에 대.. 이전 1 다음