Soft Ware 130

스핀록에 대해서 ~~

스핀 록은 상호배제를 형태로 제공되는데요 상호 배제란 하나의 스레드가 자원을 소유하고 사용하고 있으면 그 자원을 사용하는 다른 스레드는 자원을 쓰고 있는 스레드가 자원을 반납했을시 그 자원을 쓸수 있다는 방식입니다 ^^ 자 그럼 자원을 기다리는 스레드는 자원을 기달리는 동안 무슨일을 할 까요?ㅎㅎㅎ 자원을 기달리는 스레드는 검사와 설정 과정을 반복 하면서 스핀락을 획득할려고 합니다 ^^ 이처럼 자원을 획득할때까지 검사와 설정과정을 반복하면서 어떤 동작도 실행하지 않는것을 비지 웨이팅(busy-Waiting)이라고 하네요 ^^ 스핀락을 원리와 사용시에 항상 같이 나오는 놈이 있는데요 바로 데드락 이라는 놈이죠 ^^ㅋㅋ 데드락은 멀티 프로세서에서 하나의 프로세서에서 하나의 스레드가 자원A를 획득하고 다른 하..

인터럽트 처리 방법 및 인터럽트 오브젝트 !!!

오늘은 다른분의 블러그를 참조하고 글을 올리네요 ^^ 책을 보다가 인터럽트 오브젝트라는 놈을 보게 되었는데요.. 궁금한 나머지 인터넷을 조사 +.+ 자 소개 해 보겠습니다 ~~ ㅎㅎ 인터럽트 란 외부 장치 등에서 발생된 신호를 cpu에게 알리기 위한 수단입니다 ^^ 자 cpu에게 알려줬으니깐 cpu가 작동하겠죠? ㅎㅎㅎㅎ cpu는 인터럽트 서비스 루틴인 ISR을 등록하기 위해 IoConnectInterrupt DDK 함수를 호출하는데요 여기서 호출할때 인터럽트 오브젝트를 생성한다고 하네요 ^^ 인터럽트 오브젝트는 디바이스 ISR의주소와 특정 레벨의 인터럽트를 서로 연관시키는 모든 정보가 들어있다고 하네요 ^^ CPU는 인터럽트 컨트롤러에게 방금 접수된 인터럽트의 IRQ를 질의하여 해당 IRQ를 파악하여 ..

자료 구조 리스트 , 저수준 파일 입출력 을 이용한 프로그램 !!!

아 드디어 만들었네요 ㅠㅠ 처음 C++로 만들었는데 구조체가 클래스 라는것 잃고 ㅠㅠ 만들다가 왜 소멸이 안돼 !!! 삽질을 하루종일 했네요 ㅠㅠ 그러다가 구조체가 클래스니깐 소멸자를 정의 하니깐 이젠 다시 C로 만들라고 하네요 ㅠㅠ 그래서 다시 만들어 봤습니다 ㅠㅠ #define DBG 으로 정의된 부분은 주석 을 풀면 소스 사이사이에 출력문이 나옵니다 ^^ 그걸 보고 분석하면 될것 같네요 ^^ #include #include #include #include #include #include //#define DBG #define stringLen 20 enum { ADD=1, DELETE , OUTPUT, EXIT }; typedef struct List { char buffer[stringLen]; ..

string 구현하기 ~~!!

#include using namespace std; class Str { private: char *buf; //동적 메모리 할당을 위한 포인터 int size; public: Str(); //디폴트 생성자 Str(const char *ptr); //문자열로부터 생성 Str(const Str &Other); //복사 생성자 ~Str(); //파괴자 Str &operator =(const Str &Other); const Str operator +(Str &Other) const;//연결 연산자 const Str operator +(const char *ptr) const { return *this+Str(ptr); } int length() const { return strlen(buf); } frie..

템플릿의 구체적 명시화를 이용한 간단한 프로그램 ^^

#include using namespace std; template T Add(T a, T b) { return a+b; } template double Add(double a, double b) { return a+b; } template char * Add(char * a, char * b) { int data=0 ; int data1=0; data = strlen(a); data1 = strlen(b); char * cData = new char [data+data1+1]; strcpy(cData,a); strcpy(cData+data,b); return cData; } void main() { int a=1,b=2; char * str1 = "템gggdddddd릿"; char * str2 = "..