
안녕하세요 : ) shinyocean 입니다. 이번 포스팅에서 다루어볼 것은 딜레이 함수에 대한 이야기 입니다 저는 이번학기 대학교 설계 과목으로 마이크로 프로세서 응용 설계 라는 과목을 수강하게 되었습니다. 해당과목은 티바 보드라는 ARM사의 실습보드와 C 언어를 이용해 자유롭게 임베디드시스템 하드웨어를 디자인하는것입니다. 그런데 오늘 실습에서 LED 토글과 관련해서 딜레이 함수를 구현하는것을 다루게 되었습니다. 평소 딜레이 함수가 필요할때는 window.h의 sleep함수나 time.sleep과 같은 잘 짜여진 라이브러리를 이용해왔습니다. 티바보드의 경우 컴파일된 파일을 보드에서 실행하는 것이 아닌, 보드에 컴파일 칩셋이 내장되어있어서 보드 내에서 컴파일하고 실행되는 형식이었습니다. 그래서 그런지 해..

안녕하세요 :) 저번 포스팅에서 우리는 글로벌 변수를 이용한 상호배제를 지켜주는 코딩을 다루어 보았습니다. 저의 경우 모자란 코딩 실력 탓에 무식하게 스레드를 선언하고 무식하게 글로벌 변수를 선언하여 코드의 시퀀스와 상관없이 상호배제만 지켜질수 있도록 코딩을 진행해보았는데요. 사실 로직을 조금더 이해하고 조금만더 머리를 사용해보면 코드의 진행 시퀀스도 지키면서 상호배제도 이룩할수 있는 방법이 있을것 입니다. 하지만 그럴 필요가 있을까요? 저는 그보다는 이미 검증된 라이브러리를 사용하는 것을 거 추천드립니다. 왜냐하면 상호배제를 지켜줄수 있는 논리적인 방법을 열심히 생각해서 사용하는 것도 물론 큰 의미가 있겠지만, 우리보다 머리가 좋은 사람들이 이미 세마포어라는 검증된 라이브러리를 만들어 두었습니다. 이를..

안녕하세요 :) 이번포스팅에서는 글로벌 변수를 이용한 상호배제에 대하여 다루어볼것입니다. 설명전에 일단! 제가 짠 야매코드에요... 배운내용을 기억나는대로 한번 구현해본거라서... 오류가 있을수 있습니다... 사실 맞게 구현한지도 모르겠네요 ㅎ... 세마포어 관련 라이브러리를 사용하지 않고 상호배제를 이룩할수 있는 방법중에 제 코드보다 더 좋은 방법이 있다면 알려주십시오! 상호배제는 운영체제 카테고리에서도 다룬것 처럼 크리티컬한 코드의 영역에 다중접근을 방지하는것인데요. 만약 프린터 디바이스를 생각해보겠습니다. 출력하고싶은 두가지 문구 (안녕하세요, hi)가 비슷한시간에 접근하였을때 이영역을 보장하지 않고 출력한다면 결과가 이상하겠죠! 안h녕하i세요 이런식으로 섞여서 나오나요? 아닙니다. 둘중 조금이라도..

안녕하세요 :) 이번 포스팅에서 다루어볼 내용은 Linux환경의 Thread운용입니다. 운영체제 카테고리를 통해 쓰레드에 대한 내용을 다루어 보았습니다. 스레드는 프로세스의 실행 패스를 분할하여 비동기식으로 프로그램은 운용하는 것인데요. 자바카테고리에서 프로젝트를 다루어 볼때도 스레드 클래스를 상속하여 사용하는 방식으로 운용해본 적이 있습니다. 이번에는 리눅스환경에서 pthread 라이브러리를 이용할것입니다. POSIXㅅ쓰레드 의 약어로, 유닉스 운영체제제 기반의 운영체제에서 사용할수 있는 기법입니다. 헤더파일로 pthead.h를 include 하고 라이브러리 내의 함수 pthread_create(), pthread_join(), abort()등을 사용합니다. pthread_create(), 쓰레드를 만..

C언어를 주제로 한 마지막 포스팅은 파일처리에 대하여 간단하게 다루어보겠습니다. 마지막으로 다루어볼 내용은 C언어내에서의 텍스트 파일을 다루는 내용입니다. 간단하게 파일을 생성하고 생성한 파일내에 스트링을 넣는것까지만 다루어보겠습니다. C 예제문제 13번 - "오늘은 2021년 1월 11일입니다"라는 문구가있는 텍스트 파일을 생성하라 해결 과정) 먼저 data1.txt라는 파일명으로 파일을 생성하기위해 코드를 작성합니다. char* fname = "data1.txt"; FILE* f; char content[50] = "오늘은 2021년 1월 11일 (월)입니다."; if ((f = fopen(fname, "w")) == NULL) { printf("파일이 열리지 않습니다.\n"); exit(0); } ..

C언어를 주제로 한 열번째 포스팅은 구조체배열과 포인터에 대하여 다루어보겠습니다. 저번시간까지 여러가지 타입의 데이터를 저장할수 있는 구조체에 대하여 스터디 해보았습니다. 이러한 구조체도 배열로 만들어 여러번 선언하지 않고 한번의 선언으로도 다수의 구조체 변수를 사용할수 있습니다. 이번 포스팅은 구조체를 배열로 만들어 구조체배열에 접근하는 방법, 초기화하는방법, 이를 활용하는 방법에 대하여 다루어보겠습니다. C 예제문제 12번 - 다음조건에 알맞은 프로그램을 작성하라. p.606 struct 영화 -- 영화제목, 관객수 영화 5개 선정해서 struct 배열로 만들것!!! init_movie(struct .... ) 영화의 관객수를 기본 1000명으로 세팅함 main에서 for 루프로 각 영화에 대해 in..

C언어를 주제로 한 아홉번째 포스팅은 구조체에 대하여 다루어보겠습니다. 구조체는 여러가지 타입의 변수를 특정한 양식에 따라 초기화 할수있게 만든 변수공간 정도로 생각하면 될것같습니다. 다양한 정보를 갖는 변수를 초기화 하기에 좋습니다. 예를들어 초등학생의 정보라고 하여도 이름,성별,학년,학급,성적,주소 등 하나의 타입으로는 저장하기 힘든 여러 유형의 정보를 가지고 있습니다. 이러한 정보들을 하나의 양식을 만들어 초기화 하는방법으로 구조체를 이용하는것 입니다. C 예제문제 11번 - 사원의 정보를 담는 구조체를 구성하고 연봉을 계산하는 함수를 만들어서 사용하라 해결 과정) step1) 기본적인 인적사항을 초기화할 구조체인 person을 선언하기. person구조체는 마치 명함처럼 개개인의 이름과 전화번호 ..

C언어를 주제로 한 여덟번째 포스팅은 명령행 인자에 대하여 다루어보겠습니다. 지금까지는 헤더파일을 선언하고 main함수에 인자에 항상 void로 채워 넣었습니다. 이는 프로그램을 실행할때 아무런 인자 없이 그냥 실행해왔기 때문입니다. C언어에서는 프로그램을 실행할때 명령행 인자로 값을 줄수 있습니다. 이번 포스팅은 C언어의 메인함수를 "int main(int argc, char *argv[])" 이렇게 선언하여 명령행인자를 주는 방법과 명령행인자를 활용할수 있는 코딩에 대하여 다루어보겠습니다. C 예제문제 10번 - 다음의 조건을 만족하는 프로그램을 작성하시오. 명령행 인자로 두 개의 문장을 받는다. (두 개의 문장이 안되면 될 때까지 계속 받아야 함.) 각각의 문장의 길이가 얼마인지 알아내어 출력하기...