*승*
Bronze개인
팔로워0 팔로우
소개
등록된 소개글이 없습니다.
전문분야 등록된 전문분야가 없습니다.
판매자 정보
학교정보
입력된 정보가 없습니다.
직장정보
입력된 정보가 없습니다.
자격증
  • 입력된 정보가 없습니다.
판매지수
전체자료 9
검색어 입력폼
  • 8051보드를 활용한 어셈블리어 타이머, 피아노 제작
    1. 시스템 구조2. 메뉴 구조3. 컴포넌트 별 상세 내용4. 컴포넌트 별 하부 요소 및 구현 방법5. 일의 분담6. Schedule(일정) 표7. 그 외(사용할 타이머/UART 및 인터럽트 설정, 핸들러 구현 방법)형식의 ppt
    프로그램소스| 2012.10.13| 34페이지| 5,000원| 조회(352)
    미리보기
  • 충남대학교 강지훈 07년도 자료구조1 실습모음
    충남대학교 강지훈 교수님이 강의하신 자료구조 및 실습1 실습 전체 소스파일 및 보고서입니다.
    프로그램소스| 2012.10.13| 50페이지| 10,000원| 조회(189)
    미리보기
  • 충남대학교 자료구조 및 실습2 강지훈교수님 실습모음
    그래프, 스패닝트리, 숄티스트 패스, 토폴로지칼 소트, 서치, 퀵소트, 힙소트, 익스터널 소트, 옵티말 머지소트, 심볼테이블, 힙, 옵티말 바이너리 서치, 벨런스트 트리에 대한 실습자료입니다.
    프로그램소스| 2012.10.13| 2페이지| 10,000원| 조회(309)
    미리보기
  • [충남대 최훈]운영체제 생산자 소비자 문제 구현 및 커널 알고리즘 분석
    운영체제Term Project과 목운영체제담당교수최 훈 교수님학 과컴퓨터 공학과학 번 /이 름200502472 여승용200702161 이승현제 출 일2011년 6월 3일1. 과제의 목표? 내용□ 생산자- 소비자 문제 구현□ 커널 알고리즘 분석? 도출해야 할 결과□ 생산자-소비자 알고리즘을 Unix/Linux에서 구현한다.? Three processes with shared memory? Three threads? 생산자가 버퍼에 저장한 시각과 소비자가 버퍼에서 읽어갈 때의 시각 및 그 차이 및 20개 시간차의 평균값을 출력한다.? 두 방법 모두 item을 생산하고 소비하는데 random한 시간이 걸리게 한다.□ The Design of the UNIX OS책의 알고리즘을 분석하여 커널이 어떻게 동작하는지 설명한다2. 생산자 -소비자 문제 주요 모듈 설명? Multi Process□ fork()함수를 통해 같은 코드를 실행하는 또 다른 process를 가질 수 있다. 이러한 프로세스들이 서로 통신하기 위해서는 IPC(Semaphore, Queue, shared memory, message passing)방법을 사용해야 한다. 이번 과제에서 사용한 shared memory생성을 위해 사용된 함수들을 살펴보자.?SYSTEM CALL : int shmget( key_t key, int size, int shmflg );- 새로운 메시지 큐를 만들거나 존재하는 큐에 접근하기 위해 shmget()시스템 콜이 사용된다.- shmget()의 첫번째 아규먼트는 키값이다(ftok()호출에 의해 반환된). 이 키값은 커널안에 존재하는 다른 공유 메모리 세그먼트의 키값과 비교되어진다. 이때, 열기 나 접근 동작은 shmflg 아규먼트의 내용에 달려있다.- IPC_CREAT : 커널안에 이미 존재하지 않는다면 세그먼트를 만든다.?SYSTEM CALL : int shmat( int shmid, char * shmaddr, int shmflg)- addr 아규먼트가 제로(0)이면, 커널달리 Multi Thread는 수업시간에 배운대로 프로세스 내에서의 제어 흐름(하나의 실행 단위)를 만드는 것이다.□ 쓰레드의 같은 프로세스에 속한 각 쓰레드들은 공유가 가능하다.□ 쓰레드에는 Kernel-Level Threads와 User-Level Threads가 있는데 커널레벨의 경우 커널이 생성하고 커널안에서 돌아가게 되며, 유저 레벨의 경우 운영체제는 쓰레드의 존재조차 알수 없으며 스케쥴러는 프로세스 단위로 관리를 하게 된다.□ 커널레벨쓰레드의 경우 운영체제에서 지원해주므로 커널공간에서 쓰레드를 관리함으로써, 생성, 삭제, 활용등도 운영체제에서 관리한다. 때문에 overhead가 유저레벨 쓰레드보다 크다.□ 이번 과제에서 사용한 유저레벨 쓰레드의 경우 프로그래머가 라이브러리를 통해 직접 생한함으로써 커널 레벨쓰레드보다 switching이 빠르지만, 하나의 쓰레드가 I/O요청을 할 시에 나머지 쓰레드도 block되게 되는 단점이 있다.□ 이러한 쓰레드의 생성과 사용된 함수들을 살펴보자.? int pthread_create(pthread_t * thread, pthread_attr_t *attr, void * (*start_routine)(void*), void *arg);- 새로운 쓰레드를 생성하는 함수이다. 새로운 쓰레드는 start_rutine함수를 arg아규먼트로 실행시키면서 생성된다. 생성된 쓰레드는 pthread_exit를 호출하거나 또는 start_routine에서 return할 경우 제거된다.- attr아규먼트는 쓰레드와 관련된 특성을 지정하기 위한 용도로 사용된다.? int pthread_join(pthread_t th, void **thread_return);- 첫 번째 아규먼트 th는 기다릴(join)할 쓰레드 식별자이며, 두 번째 아규먼트 thread_return은 쓰레드의 리턴 값이다. thread_return이 NULL이 아닐 경우 해당 포인터로 쓰레드 리턴값을 받아올 수 있다.? int pthread_mutex_lock(pthrofday()는 time()과 매우 비슷하지만 마이크로초 단위의 시간까지 되돌려준다.- timeval구조체는 초단위로써 tv_sec인자와 마이크로초단위로써 tv_usec인자를 가진다.? 시간차를 출력하기 위해서는 모든 소비가 끝난후에 그동안 생산과 소비가 이루어진 시각을 출력해주어야 하는데 Thread의 경우 전역변수로선언하면 consumer가 producer의 변수도 접근 가능 하지만 fork를 사용한 multi process의 경우 서로 다른 프로세스이기 때문에 접근이 불가능 하므로 shared memory영역 내에 timeval 구조체로 된 tpBuffer인자에 생산이 일어난 시각에 저장하면 consumer에서도 접근이 가능하다.? 프로그램 순서도(흐름도 or 모듈 구성도)□ Multi Process□ Multi Thread? 결과화면□ Multi Process□ Multi Thread? 결과 분석□ fork로 실행된 multi-process와 user-level-thread도 프로세스 단위로 실행하게 되는데 multi thread가 일반적으로 효율적으로 사용된다. 왜냐하면 프로그램이 동작하기 위해서는 두 가지 메모리 공간이 필요하게 되는데 그 것이 바로 코드공간과 데이터 공간이다. 하나의 프로세스는 동작하기 위해 이러한 두 가지의 공간을 모두 요구하게 되는 반면, 쓰레드는 독립적인 코드공간을 가지고 개별적으로 작동할 수 있지만, 독립적인 데이터 공간을 필요로 하지 않으므로, 하나의 프로세스 아래에 있는 모든 쓰레드들은 해당 프로세스의 데이터 공간을 공유하게 된다. 이 때문에, thread 실행 부분에서 전역변수로 선언한 데이터를 모든 thread가 접근 할 수 있는 것이다. 멀티 쓰레드란 이런 방식으로 하나의 프로세스가 다수 개의 작업을 각각 쓰레드를 이용하여 작동 시킬수 있는 것을 말하는데 보통 쓰레드의 생성과 파괴는 코드공간의 관리만을 필요로 하기 때문에 프로세스의 생성과 파괴보다 훨씬 적은 자원을 소모한다. 또한 multi process에서 ite하여 shrMem에 저장한다*/shrMem = (struct sharedMemory *)shmat(shmid, (void*)0, 0);//공유 메모리내의 변수들을 초기화한다.shrMem->item = 0;shrMem->pIn = 0;shrMem->pOut = 0;//semaphore 생성 및 초기화if(sem_init(&shrMem->mysem, 0, 1) == -1){perror("Error");exit(0);}if((pid = fork()) == 0){PrcProducer(pid); // 자식프로세스에서 생산자를 실행한다.}else if(pid>0){//부모프로세스내에서 한번더 fork를 실행하여 자식프로세스를 만든다.if((pid2=fork()) == 0){PrcProducer(pid2); // 새로생성된 자식프로세스에서 생산자를 실행한다.}else if(pid2>0){PrcConsumer(pid2); // 부모프로세스에서는 소비자를 실행한다./*소스 공개소스에서는 sigaction을 통한 프로그램종료를 사용하였지만fork가 두번일 경우 자식프로세스에서 getppid로 부모프로세스를 불러올수는 있지만부모프로세스의 자식프로세스는 불러 올수 없기 때문에, 부모프로세스에 생산자를만들어서 실행하게 했다*/}}// 공유 메모리사용이 끝난 후 detach되도록 하는 systemcall이다.shmdt((void *)shrMem);/* 제거하기 위해 세그먼트에 표시하며 실제로 커널로부터 제거하는것이 아니라제거하기 위해 세그먼트에 표시를 하는 함수이다.*/shmctl(shmid, IPC_RMID, NULL);return 0;}void PrcProducer(int pid){int i,j,delay;for(i=0;iitem) > BUFSIZE){while((shrMem->item) > BUFSIZE); // busy waiting}/*아이템에 접근하기 위해 sem_wait를 사용하여 아무도 아이템에 접근하고 있지않을경우 아이템에 접근, 누군가 접근했을경우 mysem을 -1하g, utimelag);//시간차 출력}if(totallag>0)//초단위가 0보다 큰경우 20으로 나누기위한 연산{division = (totallag*1000000) + utotallag;//초와 마이크로 초를 더하고division = division / 20;//20으로 나눈후에if(division>1000000){//그값이 1000000보다 크면atotallag = division / 1000000;//시간차의 평균 초단위 저장autotallag = division % 1000000;//시간차의 평균 마이크로 초 저장}else{atotallag = 0;//1000000보다 작으면 초는 0이고autotallag = division%1000000;//시간차의 평균 마이크로 초 저장}}else{atotallag = totallag/20;//0보다 작으면 그냥 20으로 나누면 된다.autotallag = utotallag/20;}//평균 시간차 출력printf(" total time lag : %ld.%06ld n", totallag, utotallag);printf(" Average of time lag : %ld.%06ld n", atotallag, autotallag);}? termpc2.c 소스코드 분석#include #include #include #include #include #include #include #define NUMELEMENTS 20#define BUFSIZE 4#define LAMBDA 0.5#define SLEEPTIME 10int pIn = 0, pOut = 0, item = 0;//생성자 소비자, 아이템struct timeval tpBuffer[BUFSIZE];struct timeval tvproduce[NUMELEMENTS];//생성시간 저장struct timeval tvconsume[NUMELEMENTS];//소비시간 저장pthread_cond_t slots = PTHREAD_COND_INITIALIZER;pthread0;j
    공학/기술| 2012.10.13| 22페이지| 7,000원| 조회(484)
    미리보기
  • [충남대 이영석 데이터통신]데이터통신 pcap을 이용한 패킷캡처
    충남대학교 이영석교수님 첫번째 과제인 pcap을 이용한 패킷캡쳐입니다.A.내용 Pcap Library를 이용하여 Ethernet Frame을 캡쳐하여 출력한다.B.도출해야 할 결과1.인터페이스 디바이스 명2.이더넷 페이로드의 타입 출력3.출발지 도착지의 MAC Address 4.패킷이 캡쳐된 시간 및 길이5.이더넷 payload 출력 (한줄에 16바이트 씩)6.X86과 데이터 통신에서의 비트 오더링 지키기7.2.과제의 해결 방법A.주요 모듈 설명print_alldevs();모든 장치를 출력해주는 함수입니다. Pcap_findalldevs 함수를 이용하여 pcap_if_t로 선언된 변수 alldevs에 장치를 linked list형태로 저장합니다. 그 후 for loop를 써서 임시로 만든 selevt_dev변수에 첫번째 장치를 저장 한 후 pcap_if_t 구조체에 정의된 다음 장치를 가리키는 next변수를 이용하여 모든 장치를 출력해 주고 그 안에 있는 장치에 대한 정보 description안에 있는 문자열을 출력해 주었습니다.
    프로그램소스| 2012.10.13| 3,000원| 조회(358)
    미리보기
전체보기
받은후기 1
1개 리뷰 평점
  • A+최고예요
    0
  • A좋아요
    0
  • B괜찮아요
    1
  • C아쉬워요
    0
  • D별로예요
    0
전체보기
해캠 AI 챗봇과 대화하기
챗봇으로 간편하게 상담해보세요.
2026년 04월 23일 목요일
AI 챗봇
안녕하세요. 해피캠퍼스 AI 챗봇입니다. 무엇이 궁금하신가요?
1:21 오전
문서 초안을 생성해주는 EasyAI
안녕하세요 해피캠퍼스의 20년의 운영 노하우를 이용하여 당신만의 초안을 만들어주는 EasyAI 입니다.
저는 아래와 같이 작업을 도와드립니다.
- 주제만 입력하면 AI가 방대한 정보를 재가공하여, 최적의 목차와 내용을 자동으로 만들어 드립니다.
- 장문의 콘텐츠를 쉽고 빠르게 작성해 드립니다.
- 스토어에서 무료 이용권를 계정별로 1회 발급 받을 수 있습니다. 지금 바로 체험해 보세요!
이런 주제들을 입력해 보세요.
- 유아에게 적합한 문학작품의 기준과 특성
- 한국인의 가치관 중에서 정신적 가치관을 이루는 것들을 문화적 문법으로 정리하고, 현대한국사회에서 일어나는 사건과 사고를 비교하여 자신의 의견으로 기술하세요
- 작별인사 독후감