목차 운영체제 디버깅 디버깅 : 하드웨어와 소프트웨어에서의 오류를 발견하고 수정하는 행위 디버깅을 하기 전에 병목현상이나 시스템의 효율적인 수행을 방해하는 요소를 찾을 수 있어야하는데 만약 수행을 하다가 프로세스가 실패를 하게 된다면 시스템 상의 장애가 발생하게 되는데, 프로세스의 경우 오류 정보를 로그 파일에 기록하고 프로세스가 사용하던 메모리를 캡쳐한 코어 덤프(예전에는 메모리를 코어라고 불렀다)를 취하고 분석을 위하여 파일로 저장한다. 프로그램과 코어덤프는 디버거에 의해 검사되며 사용자가 분석할 수 있게 한다. 커널의 경우 오류 정보를 로그파일에 기록하고 크래시 덤프(커널은 크래시라고 한다)에 저장한다. 프로세스나 커널 등의 장애 분석도 중요하지만 지속적인 성능 관찰 및 조정도 필요하다. 성능 조정..
목차 문제풀이를 하기 전에 이번 단계의 제목인 재귀의 개념에 대해서 간단히 요약하자면 재귀함수란, 어떤 함수에서 자신을 다시 호출하여 작업을 수행하는 방식의 함수를 의미한다. 반복을 하되 문제에서 원한 조건을 만족시키기 위해 함수의 인수 등을 바꾸어 가면서 함수에 적용시켜줘야한다. 따라서 이번 단계에서는 숏코딩 보다는 재귀를 사용하며 문제풀이를 하는 방향으로 풀이를 하겠다 팩토리얼(#10872) Problem 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. Hint N!은 N부터 1씩 감소하는 정수를 계속 곱해가는 연산방법이다. Solution 재귀을 이용한 풀이 def fac(n): global res if n==0: print(res) return else: r..
목차 개요 게임이나 여행계획을 짤 때 디스코드를 통하여 소통을 하는 경우가 많다. 디스코드는 텍스트는 물론 사진 영상 실시간 음성 통화 실시간 영상 통화 여러 가지 종류의 리액션 스티커와 이모지까지 많은 기능들을 지원한다. 또한 봇 이라는 기능도 지원하는데 이를통하여 전화를 하고 있는 방에 노래를 튼다거나 사용자들의 사용시간, 게임을 플레이한 시간등을 트래킹 할 수 있는 기능도 들어가있다. 이번 포스팅 시리즈에서는 온라인 서버 서비스인 replit 과 디스코드에서 지원하는 개발자 툴을 이용하여 봇을 직접 만들어보고 사용해보고 필요한 기능도 추가해보자 디스코드 develop 에서 봇을 생성하고 서버에 추가하기 먼저 아래의 링크를 통해서 디스코드의 계정에 로그인을 해준다. Discord Developer P..
목차 운영체제의 생성 운영체제 소스 코드를 작성한다.(혹은 소스 코드를 불러온다.) 운영체제의 실행을 위한 운영체제를 구성한다. 운영체제를 컴파일한다. 운영체제를 설치한다. 컴퓨터를 부팅한다. 닭과 계란은 하지 못하는 운영체제의 실행을 위한 운영체제를 구성한 후에 이러한 운영체제를 완전히 컴파일 하고 설치된 시스템에 맞는 데이터 선언이나 변수 등을 재 생성하는 과정을 거친다 (시스템 빌드) 또한 목적에 맞는 운영체제 빌드도 생각해볼수 있는데 생성된 시스템의 크기나 일반성이나 하드웨어 구성이 변경 될 시에 변경이 쉽게 되는 정도에 따라서 나뉠 수 있다. 임베디드 시스템의 경우에는 목적에 맞추어서 운영체제등이 설치되기 때문에 비교적 시스템의 크기가 작고 하드웨어 구성이 컴퓨터 처럼 쉽게 변경되지 않는다. 따..
목차 개요 운영체제는 크고 복잡한 하나의 체계보다는 여러가지로 분할되어 일을 분배하여 처리하는 방식이 더 적절하게 동작되고 쉽게 변경하고 적용할 수 있는 장점을 가지게 된다. 따라서 이번 포스팅에서는 운영체제의 기술구조의 유형과 그에 맞는 차이점 등을 알아볼 것이다. 대부분의 운영체제는 기술의 발전에 따라서 단순한 계산과정만 처리하던 컴퓨터에서 기능이 점점 많아지면서 점점 복잡한 작업들을 수행해야함에 따라 세분화되고 체계화 되는 것을 알 수 있다. 모놀리식 구조 Monolithic Structure 가장 간단한 구조는 구조가 존재하지 않는 구조이다. 즉 커널의 모든 기능을 단일 주소 공간에서 실행되는 단일 정적 이진 파일에 넣는 것이다. 이러한 구조는 UNIX에서부터 시작되었는데 전통적인 UNIX 운영체..
목차 소수 찾기(#1978) Problem 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오. Hint 소수의 특징을 생각해보면 n으로 나누었을때(1과 자신을 제외한) 나누어 떨어지면 안된다. Solution n = int(input()) r=0 for i in map(int,input().split()): c=1 for j in range(i-2): if i%(j+2)==0: c=0 if i==1: r-=1 r+=c print(r) 1로 나누었을때도 나누어 떨어진다고 인식하기 때문에 나누는 인자를 2부터 시작하게 코딩하였다. 소수(#2581) Problem 자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램..