본문 바로가기

전체 글

(87)
[운영체제] 프로그램의 실행 본 게시글은 KOCW 이화여자대학교 반효경 교수님의 강의를 듣고 정리한 내용입니다. 게시글에 포함되는 이미지 자료 또한 해당 강의에 포함된 강의 자료입니다. 프로그램의 실행 - 메모리 load 과정 프로그램이 어떻게 컴퓨터에서 실행되는 것인지 프로그램 실행 과정에 대해 정리해봅시다. 보통 프로그램은 하드디스크(파일 시스템)에 실행파일(exe) 형태로 저장되어 있습니다. 이 실행파일을 실행시키게 되면, 메모리로 올라가서 프로세스가 되어 실행됩니다. 즉, 프로그램 실행의 큰 구조는 Disk에 있는 실행 파일을 실행하면, 물리적인 메모리에 올라가서 프로세스가 되어 프로그램이 실행됩니다. 이 때, 바로 물리적인 메모리(Physical Memory)로 올라가는 것이 아니라 가상 메모리 단계를 거치게 됩니다. 어떤..
[Algorithm/Swift] 프로그래머스(Lv.2) - 무인도 여행 안녕하세요 제인입니다! 프로그래머스에 최근 추가된 연습문제 중 하나인 무인도 여행이라는 문제를 풀어보았는데요, 문제 해결 아이디어를 코드로 구현하는 것이 꽤나 어려웠던 문제이기도 하고, Swift 풀이가 아직 없는 것 같아서 한 번 정리해보려고 합니다! 무인도에 왜 굳이 여행을 가는지는 모르겠지만 암튼 시작해볼게요..ㅎ 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 메리는 여름을 맞아 무인도로 여행을 가기 위해 지도를 보고 있습니다. 지도에는 바다와 무인도들에 대한 정보가 표시돼 있습니다. 지도는 1 x 1크기의 사각형들로 이루어진 ..
[운영체제] I/O의 수행 - 인터럽트(Interrupt)와 시스템 콜(System Call) 본 게시글은 KOCW 이화여자대학교 반효경 교수님의 강의를 듣고 정리한 내용입니다. 게시글에 포함되는 이미지 자료 또한 해당 강의에 포함된 강의 자료입니다. I/O의 수행 모든 I/O(입출력) 명령은 특권 명령이므로 사용자 프로그램은 직접 I/O device에 접근할 수 없습니다. 그렇다면 사용자 프로그램은 어떻게 I/O를 수행하게 될까요??사용자 프로그램은 시스템 콜(System Call)을 통해 운영체제에게 I/O 요청을 하게 됩니다.시스템 콜을 통해 trap을 사용한 인터럽트(Interrupt)를 걸어 CPU 제어권이 운영체제에게 넘어갈 수 있도록 하는 방식으로 요청하는 것입니다. 인터럽트가 들어오면, CPU는 올바른 I/O 요청인지 확인 후 I/O 요청을 수행합니다. 시스템 콜 (System Ca..
[운영체제] 컴퓨터 시스템 구조 본 게시글은 KOCW 이화여자대학교 반효경 교수님의 강의를 듣고 정리한 내용입니다. 게시글에 포함되는 이미지 자료 또한 해당 강의에 포함된 강의 자료입니다. 컴퓨터 시스템 구조 컴퓨터 시스템은 크게 CPU, Memory, 주변장치(하드디스크, 입출력 장치)로 구성되고, 이들은 시스템 버스로 연결합니다. 먼저 간략하게 설명해보면, CPU는 모든 장치의 동작을 제어하고 명령을 실행하는 중앙처리장치이며, 메모리는 CPU의 작업 공간입니다. 주변장치는 큰 개념으로 모두 입출력 장치라고 볼 수 있는데, 입력 장치에는 키보드, 마우스 등이 있으며 출력장치는 모니터, 프린터 등이 있습니다. 하드디스크는 보조기억장치로 보통 이야기 하지만, 하드디스크의 데이터를 메모리로 읽어들이기도 하고(입력 장치로서의 역할), 처리 ..
[Algorithm/Swift] 동적 계획법(Dynamic Programming) 안녕하세요 제인입니다! 오늘은 알고리즘 개념 중 동적 계획법(Dynamic Programming)에 대해 정리해보려고 합니다. 동적 계획법이 무엇인지 정리해보고, 동적 계획법의 대표적인 예제인 문제를 통해 적용까지 해보도록 할게요! 동적 계획법(Dynamic Programming, DP) 다이나믹 프로그래밍(줄여서 DP)라고도 불리는 동적 계획법은 큰 문제를 작게 나누고, 같은 문제라면 한 번씩만 풀어 문제를 효율적으로 해결하는 알고리즘 기법입니다. 동적 계획법에서는 메모이제이션(Memoization) 기법이 핵심이라고 할 수 있는데요! 메모이제이션 기법이란, 한 번 구한 결과를 메모리 공간에 저장해두고 같은 식을 다시 호출해 저장한 결과를 그대로 가져오는 기법을 의미합니다. 메모이제이션은 값을 저장하는..
[Swift] enumerated() 안녕하세요 제인입니다! 오늘은 enumerated()에 대해 정리해보려고 하는데요, 알고리즘 문제를 풀다 다른 풀이를 참고해보면 enumerated()를 사용해 더 깔끔하게 처리한 풀이가 많아서 enumerated() 함수가 무엇인지, 그리고 어떻게 활용하는지까지 한번 정리해보려고 합니다! 제대로 정리해두고 잘 써먹어봅시다! enumerated() enumerate는 사전적으로 열거하다, 세다 라는 의미를 가지는데요, Swift에서는 어떤 의미로 사용되는지 먼저 공식 문서를 통해 enumerated()의 정의부터 살펴보겠습니다! (n, x)로 이루어진 쌍의 시퀀스를 반환합니다. 여기서 n은 0부터 시작하는 연속적인 정수를 나타내고 x는 시퀀스의 요소를 나타냅니다. 정도로 해석할 수 있을 것 같은데요, 요..
[회고] 2022년 회고 2022년은 나에게 다채로운 기억들로 가득한 한 해였다. 많은 경험들을 할 수 있는 기회가 감사하게도 많았고 그 과정에서 좋은 사람들을 많이 만나기도 했다. 또, 여러 일들을 마무리하기도 했기 때문에 2022년이 거의 다 끝난 시점에서 지난 1년을 되돌아보려고 한다. 1월 - 첫 앱잼, 그리고 나도선배 1월 2일에 진행된 전체 팀빌딩을 시작으로 앱잼 프로젝트가 시작된 덕에 새해부터 좋은 사람들을 많이 만나고, 개발도 열심히 하며 알차게 보낼 수 있었다. 1월은 정말 하나에 완전히 몰입한 시기였다. iOS 개발을 시작한 이후 처음으로 참여했던 규모있는 프로젝트였고, 처음부터 릴리즈를 목표로 하고 지속적으로 업데이트해가며 유지될 수 있는 서비스를 계획하고 있었던 팀이었기 때문에 앱잼 단계부터 최대한 잘해내고..
[운영체제] 운영체제란? 운영체제란? 운영체제(OS, Operating System)는 사용자가 응용 프로그램을 실행할 수 있는 기반 환경을 제공하여 컴퓨터를 편리하게 사용할 수 있도록 도와주고, 하드웨어를 효율적으로 사용할 수 있도록 다양한 기능을 제공하는 시스템 소프트웨어입니다. 컴퓨터 시스템은 크게 사용자, 소프트웨어, 하드웨어로 구성되는데, 운영체제는 하드웨어 바로 윗단에 설치되는 소프트웨어로 사용자가 하드웨어에 접근할 수 있는 유일한 수단입니다. 그렇기 때문에 운영체제는 하드웨어와 각종 소프트웨어, 그리고 사용자를 연결해주는 계층이라고 할 수 있습니다. 운영체제의 종류로는 UNIX, MS-DOS, MS Windows 등이 있습니다. 운영체제의 목적 1. 컴퓨터 시스템의 자원을 효율적으로 관리 (효율성) 컴퓨터 시스템의 ..