본문 바로가기

컴퓨터 기초81

2.프로그램 실행과정 프로그램 실행과정 참고 cpu개발자는 cpu를 디자인 하면서 cpu명령어를 디자인 한다. cpu명령어에 따라서 cpu 구조가 변경되기도 한다. cpu 명령어 예) 0011 은 덧셈으로 인식하도록 디자인 0010은 마이너스로 인식하도록 디자인 .. 위의 예 처럼 만약 0011이 cpu로 들어가면 컨트롤 유닛에 의해서 덧셈으로 처리된다. 하지만 0011에게는 프로그래머가 직접 사용하기 어렵다. 그래서 0011 명령어에 ADD 같은 문자를 붙였다. 그리고 그 후에 ADD 같은 명령어도 사람이 직접 사용하기 어려워서, java, c 같은 고수준 언어가 만들어진다. 1.전처리기에 의한 치환작업 #으로 시작하는 지시자. ex) #include 전처리기 -> 컴파일러 -> 어셈플러 -> 링커 2.컴파일러에 의한 번역.. 2021. 1. 18.
1.시스템이란? 시스템이란? 하드웨어 + 운영체제 시스템 프로그래밍이란? 운영체제 자체의 기능을 활용해서 소프트웨어를 개발하는 것. 컴퓨터 시스템의 구성요소 컴퓨터 구조 : cpu, 캐쉬 운영체제 : 메인메모리, 하드웨어 cpu : 중앙처리 장치이다. 연산이 이루어지는 원리는 무엇인가를 이해해야 한다. 메인 메모리 : 램이다. 프로그램 실행 방식을 이해해야 한다. 입출력 버스 : 데이터 송수신이 이루어지는 원리를 이해해야한다. cpu에 대한 이해 1.A라는 파일(2+5 더하기 기능) 이 있다. 2.A라는 파일컴파일 3.실행파일(바이너리파일) 하드디스크에 저장 4.실행 5.실행을 위해서 숫자 2와 5 그리고 덧셈이라는 연산자가 메인메모리로 이동하게 된다. (메인 메모리로 올라가야 cpu가 연산을 할 수 있다.) 6.숫자 .. 2021. 1. 17.
우분투 기초 - 1 유닉스의 탄생 유닉스 운영체제가 탄생하면서 어플들은 하드웨어에 종속되지 않고, 운영체제에 종속된다. 어플들은 무조건 운영체제를 거쳐서, 하드웨어나 메모리에 접근할 수 있다. 이전에는 어플들이 컴퓨터에서 돌아갈려면 컴퓨터에 설치된 하드웨어에 맞아야 했는데, 유닉스 탄생이 후 운영체제에만 맞으면 된다. 쉘의종류 프롬프트에서 $사인은 일반사용자를 뜻한다. #사인은 ROOT 사용자를 뜻한다. sudo (super user do) su (switch user) #.파일시스템의 구조 운영체제를 사용하는 이유는 쉘이라는 명령 프롬프트를 통해서 프로그램을 자유롭게 실행. 실행하려면 프로그램을 다운로드해야한다. 만약 리눅스에서 파일을 다운로드 하면 다운로드 후, 어떤 파일에 저장이 될까? cd / (change dire.. 2021. 1. 11.
c언어 문자 치환 - 특정 문자 찾아서 바꾸기 c언어 문자 치환 - 특정 문자 찾아서 바꾸기 5-1. c언어 파일입출력 함수를 이용해서 파일의 단어수 체크하기(응용예제) 5-2. c언어 파일함수로 특정 문자 찾기(응용예제) 이전 포스팅에서 c언어 파일,문자함수를 이용해서 특정 단어수를 체크해서 출력하고, 특정 문자가 포함되어 있는 열을 찾아서 출력해주는 예제를 살펴보았다. 이번에는 c언어 함수를 이용해서 파일에서 문자를 치환하는 예제를 살펴보려고 한다. 예를들어 파일 여러 줄에 hi 라는 단어가 있다면 전부 찾아서 hello 로 변경해주는 예제이다. c 파일을 컴파일 한 뒤 실행파일명 문자치환을할 파일명 치환할대상문자 치환문자 순으로 입력하면 된다. 예) ./searchword.o log caa can searchword.o 실행파일에서 log 파일.. 2021. 1. 8.
c언어 파일함수로 특정 문자 찾기 c언어 파일함수로 특정 문자 찾기 지난 포스팅(c언어 파일입출력 함수를 이용해서 파일의 단어수 체크하기)에서는 파일 함수를 이용해서 특정문자가 포함되어 있는 줄을 찾아서 출력하는 예제를 살펴 보았다. 예를들어 onec one time라는 문자가 있고 one을 찾으면 onec one time 노란색으로 표시된 두 문자가 one을 포함하고 있기 때문에 one을 포함하는 단어는 2개라고 출력했다. 이번에는 c언어 파일 함수를 이용해서 찾을려고 하는 문자와 일치하는 경우에만 카운터를 해서 일치하는 문자수와 해당 라인을 출력해주는 예제를 살펴보자. 이번에는 one 이라고 검색하면 onec one time 처럼 one 만 찾아서 일치하는 단어는 하나라고 표현해 준다. 예제 searchword.c 아래 소스를 보면 .. 2021. 1. 7.
c언어 파일입출력 함수를 이용해서 파일의 단어수 체크하기 c언어 파일입출력 함수를 이용해서 파일의 단어수 체크하기 C언어의 파일 입출력 함수를 이용해서 파일을 읽고, 그 파일에서 찾고 싶은 단어의 개수를 검색해서 총 몇개의단어가 있는지, 그 단어가 있는 라인은 몇번 째 줄인지를 출력해주는 예제를 만들어 보자. 예제에서 사용된 함수는 아래와 같다. 1.access(파일명, 모드) : 프로세스가 지정한 파일이 존재하는지, 읽거나 쓰거나 실행이 가능한 지를 확인하는 함수다. 접근 가능하면 0, 접근이 불가능하면 -1 리턴한다. 2.perror(내용) : 오류 출력 함수. 3.fopen(파일경로, 모드) : 파일 기술자를 연다. 4.feof(파일 기술자) : 파일을 읽다가 파일의 끝이면 1, 끝이 아니면 0을 반환한다. 5.fgets(담을변수, 변수사이즈, 파일기술자.. 2021. 1. 6.
4.연결리스트 - 연결리스트 앞장에서 배열을 이용한 리스트 구현에 대해서 배웠다. 요약하자면 아래와 같다. 1.ADT (Abstract Data Type) 추상 자료형에 대한이해 2.리스트 자료구조의 특성과 활용 3.리스트 종류 -순차 리스트 : 배열을 기반으로 구현된 리스트 -연결 리스트 : 메모리의 동적 할당을 기반으로 구현된 리스트 4.배열 기반 리스트의 단점 -배열의 길이가 초기에 결정되어야 한다. 변경이 불가능하다. -삭제의 과정에서 데이터의 이동(복사)가 매우 빈번히 일어난다. 5.배열 기반 리스트의 장점 -데이터의 참조가 쉽다. 인덱스 값을 기준으로 어디든 한 번에 참조가 가능하다. 배열과 관련된 예제를 보자. 위의 예제를 보면 배열의 단점을 알 수 있다. "배열은 메모리의 특성이 정적이어서(길이의 변경이 불가능해서) .. 2020. 9. 2.
3.연결리스트 - 배열 추상 자료형(ADT)의 이해 추상자료형이란? 구체적인 기능의 완성과정을 언급하지 않고, 순수하게 기능이 무엇인지를 나열한 것 지갑을 의미하는 구조체 Wallet의 정의 int TakeoutMoney(Wallet* pw, int coinNum, int billNum); -첫번째 인자로 전달된 주소의 지갑에서 돈을 꺼낸다. -두번째 인자로 꺼낼 동전의 수, 세번째 인자로 꺼낼 지폐의 수를 전달한다. -꺼내고자 하는 돈의 총액이 반환된다. 그리고 그만큼 돈은 차감된다. void PutMoney(Wallet* pw, int CoinNum, int billNum); -첫번째 인자로 전달된 주소의 지갑에 돈을 넣는다. -두번째 인자로 넣을 동전의 수, 세번째 인자로 넣을 지폐의 수를 전달한다. -넣은 만큼 동전과 .. 2020. 9. 2.
2.재귀 재귀함수의 기본적인 이해 javascript 로 구현한 재귀함수 예제 재귀함수의 간단한 예제 팩토리얼의 이해 재귀함수를 이용한 팩토리얼 예제 피보나치 수열 함수의 이해 피보나치 수열 함수의 흐름 재귀함수를 이용한 피보나치 수열 이진 탐색 알고리즘의 재귀구현의 이해 이진 탐색 알고리즘의 재귀구현 참고: 윤성우의 열혈 자료구조 2020. 8. 31.