728x90
728x90

공부 37

파이썬(Python) 간략 정리

파이썬(Python)은 귀도 반 로섬에 의해서 1991년에 나온 인터프리터 언어로, 이 역시 심심할 때 만들어져서 나온 공돌이들의 걸작 중 하나로 분류된다. 파이썬(Python)은 크게 두 버전, Python 2(2000), Python 3(2008)로 분류하며, 두 버전 간 호환되지 않는 부분이 너무 많았던 적이 있었다. 결론적으로 파이썬 2는 2.7 이후로 더 이상 발전할 일이 없고 3에 초점을 맞춰 개선되고 있기 때문에 파이썬 3에 맞춰 공부하는 것이 좋다. 파이썬은 개발자들 사이에서는 생산성과 개발 속도에서 매력이 있는 언어로, 교육 기관에서는 초보자들이 입문하기 쉬운 언어로 분류되는 추세다. 국외 대학에서는 이미 프로그래밍 입문 언어로 파이썬을 선택했고, 국내 대학도(필자가 재학 중인 학교의 학..

범용 처리기 수에 따른 컴퓨터 시스템 구조

컴퓨터 시스템을 사용된 범용 처리기의 숫자에 따라 분류하면 세 가지로 분류할 수 있다. 단일 처리기 시스템(Single-Processor Systems) 가까운 과거까지는 대부분의 시스템에서는 하나의 처리기를 채택해 이를 바탕으로 범용 명령어 집합을 수행하도록 했으며 이 때 이를 수행하는 것은 하나의 메인 CPU였다. 시스템에 특수한 목적으로 설계된 전용 처리기가 존재하는데, 이 전용 처리기는 특정한 장치 처리기 형태로 제공하거나 메인프레임 같은 시스템의 구성요소 간 데이터 전송을 수행하는 입출력 처리기 형식으로 제공될 수 있다. 이 모든 전용 처리기들이 제한된 명령어를 실행하고 사용자 프로세스를 실행하지는 않고, OS에 의해 관리되는 경우가 있다. OS는 이 상황에서 다음 태스크에 대한 정보를 보내고 ..

Computer Science/OS 2017.12.25

C++에서 문자열을 숫자로, 숫자를 문자열로

문자열 처리, 특히 숫자를 문자열로 다루어야 하는 문제들을 접하면 C언어를 주로 했던 사람들은 바로 떠올리는 게 atoi나 itoa다. 물론, 이를 몰라서 아스키 코드를 바탕으로 한 문자열 처리를 하겠지만(필자가 그랬다.), 어쨌든 이 두 함수를 알고 있는 사람들은 C++에서도 cstdlib.h 헤더 파일을 추가해주면 사용이 가능하다. 문자열을 숫자로 변환시켜주는 atoi는 표준 함수라서 크게 문제되진 않지만, 함수 자체가 가지고 있는 문제점이 있어서 더 좋은 대안이 있다면 사용에 주의를 기울여야 한다. 보통은 기본적인 수준의 문자열 처리 문제들을 푸는 상황에서는 문제가 없다. 문제는, 숫자를 문자열로 변환 시키는 itoa다. 표준이 아니라서 비표준 함수를 처리해주지 못하는 컴파일러를 만나면 컴파일 에러..

저장 장치 구조(Storage Structure)

모든 메모리는 바이트의 배열을 제공하며, 각 바이트는 주소값을 가지고 있다. 이 특정 메모리 주소에 대해서 일련의 적재(load)와 저장(store) 명령을 통해 상호작용이 일어난다. 적재 명령은 주 메모리에서 CPU 내부의 레지스터로 1 byte 혹은 1 word를 옮기고, 저장 명령은 레지스터에서 주 메모리(RAM;Random Access Memory;주로 DRAM)로 내용을 옮기는 것을 뜻한다. 명시적인 적재/저장 외에 CPU는 실행을 위해서 자동적으로 주 메모리로부터 명령을 적재하기도 한다. 폰 노이만 구조 시스템에서 실행되는 전형적인 명령-실행 사이클에서는, 먼저 메모리에서 명령을 가져와 그 명령을 명령 레지스터(Instruction Register;IR)에 저장하고 명령을 해독한다. 이 상황에..

O/S] 운영체제 정의

어떤 용어에 대한 정의라고 하면 여러모로 중요하게 여겨진다. 좁게 보면 시험에서 정의를 가지고 논하는 부분부터 시작해서 넓게 보면 그 용어가 품고 있는 의미들과 파생된 것들을 이해하는데 큰 도움이 되기 때문이다. O/S에 대해서 줄창 이야기는 하면서 운영체제라고 하면, 그저 '윈도우나 맥, 안드로이드 같은 것'쯤으로 대답하는 것이 전부인 상황에서 좀 알아두는 게 좋을 것 같아 정리한다. 컴퓨터 시스템에 대해서 조금씩 깨우치기 시작하는 사람들은 O/S가 수행하는 여러 가지 기능들이 너무 많아 어느 하나로 정리해서 설명하기가 어렵다.(필자도 애매하다.) 그도 당연한 것이 개인이 PC를 사용하는 이유도 제각각이며, 그 PC에서 구동되는 프로그램도 제각각, 온갖 다양성을 가지고 있기 때문이다. 컴퓨터 시스템을 ..

Computer Science/OS 2017.12.02

C++] 예외 및 예외 처리 기본

프로그램이 실행 중 오동작이나, 결과를 달리 하게 만드는 예상하지 못한 상황 발생을 예외(Exception)라고 하며, 이를 적절히 처리해주는 것을 예외 처리(Exception Handling)라고 한다. 대부분의 학교에서 처음 프로그래밍에 입문해서 코드를 짜기 시작하면, 기능적인 부분에 집중을 하고 책을 따라가기 때문에 이 예외에 대해서 고려할 일이 거의 없어서 이쪽 분야에 관심을 두지 않는 학생들을 졸업장을 받을 때까지 신경 쓰지 않는 경우도 간혹 있다. 만약 자신이 소프트웨어 분야에 관심이 많고, 그로 인해서 자신의 경험을 쌓고자 개인적인 프로젝트를 진행하거나, 학년이 올라 텀 프로젝트를 실시해서 그럴싸한 프로그램을 완성해야 하는 상황이 오게 되면, 예상하지 못한 곳에서 발생하는 문제들을 접하고 해..

C,C++] C++코드와 C 코드의 링크, Mangling 규칙

C언어는 다른 언어들에 비해(C++, Java 등) 역사가 길어 그동안 작성된 라이브러리, 소스가 많이 존재하며 이것들이 각기 다른 분야에서 활발히 사용되고 있다. 만일 C++ 프로그램을 개발할 때 기존에 작성된 C의 라이브러리, 소스를 사용하게 될 경우가 있는데 이때 C++ 프로그램에서 C 코드를 연결해 사용하는 방법을 알고 있다면 비교적 쉽게 다룰 수 있다. 서로 다른 언어를 연결하는 것은 쉬운 일은 아니지만, C++은 C의 내용들이 남아 있는 분들이 있어 상대적으로 쉬운 편이다. 모든 컴파일러가 목적 코드(obj)를 만들 때, 소스코드의 변수, 함수, 클래스 등의 이름을 변형해 저장한다. 이를Name Mangling(일부 책에서는 이를 이름 규칙이라고 하는데 표현이 애매해 사용하지 않겠다.)이라고 ..

C++] 명품 C++ 프로그래밍 8장 실습문제

개인적으로 C++을 공부할 때 작성해놓았던 코드들을 찾았다. 혼자 책을 사서 독학하던 시절에, 그리고 학부생 시절에 복습하면서 했던 문제들이라서 어떤 문제들은 깔끔히 잘 정리되어 있고, 어떤 문제들은 허접한 버그가 있을 수도 있다. 확인은 해뒀지만, 확인하지 못하거나 고려해야 할 버그, 오탈자 등은 댓글을 남겨주시라. 그간 공부한 것들을 정리하는 블로그이기 때문에 올려놓는다. 지금까지는 실습문제 문제 내용까지 적었지만, 귀찮기도 하고, 굳이 입력할 필요성은 느끼지 않아서 적지 않았다. 차후 게시물을 대대적으로 수정할 때면 추가될지도 모른다. 실습문제 1. #include #include using namespace std; class Circle { int radius; public: Circle(int..

ARM 프로세서 동작모드

프로세서가 프로그램 실행할 때 권한을 설정하며 6개의 특권 모드(Privileged Mode)와 1개의 사용자 모드(User Mode)로 총 7개의 동작모드가 존재함. Privileged Mode예외 처리, 시스템 자원에 접근하며, 아래 모드로 구성됨. - SystemOS를 위한 동작모드로 OS 커널 작업을 실행하며, 시스템 자원에 접근이 가능함. 예외 발생 없이 진입하며, User Mode와 동일한 레지스터 셋을 사용함. - Abort명령어, 데이터 메모리 접근에 오류가 발생하면 나오는 Abort 예외 발생 시 진입. 명령어 접근 오류(Pre-fetch abort)는 명령어 Pre-fetch 과정에서 발생하는 오류이며 데이터 접근 오류(Data abort)는 데이터 alignment, 가상 어드레스 변..

임베디드 OS - 실시간 OS

임베디드 OS 특성 범용 OS에 비해서 작은 크기로, 빠른 부팅, 저전력, 비 디스크 방식의 운용. 다양한 프로세서를 지원하고 빠른 응답 속도가 존재함. 메모리 기반의 파일/DB 시스템을 운영함. 목표 시스템에 따라서 구성이 변경 가능한 컴포넌트 기반 OS가 많이 사용됨. 실시간 OS의 특성 제한 시간 내 출력하고, 정시에 작업 수행이 가능한 환경. 예측 가능, 일정한 응답 시간 요구하는 응용 프로그램을 지원함. HW 자원 사용으로 시간 제한 극복. 우선 순위를 설정해 실행 시간 할당. - Hard real-time; 경성 실시간일정 시간 안에 작업을 처리해야 하며, 제한 시간을 넘길 경우 시스템 실행을 실패로 간주. 군사무기, 항공기 등에 적용. - Soft real-time; 연성 실시간제한 시간 초..

728x90