##저항기의 분류
• 재료, 제조 방법, 형태에 따라 다양한 종류
• 전자산업의 발전에 따라 새로운 저항기들이 개발
• 고정 저항기

  – 탄소계 : 탄소피막 저항기(155℃) , 솔리드 저항기(125℃) 
  – 금속계 : 금속필름 저항기, 산화금속피막 저항기(155 ~ 175℃), 메탈글래즈 저항기, 휴즈형 저항기
  – 권선형 : 권선형 저항기(270℃), 권선형 무유도저항기, 전략형 시멘트 저항기, 메탈클래드 저항기(155 ~ 175℃) 
  – 후막형 : 후막 칩 저항기(125℃), 후막 칩 어레이 저항기, 후막 네트웍 저항기, 후막칩 네트웍 저항기
  – 박막형 : 박막 칩 저항기
  – 기타 특수형 : PTC 서미스터, NTC 서미스터, 배리스터
• 가변 저항기 : 탄소피막형, 후막형, 코일형, 반고정형, 포텐시오메타형 

## 저항기의 특징
• 고정 저항기
  – 소비전력에 따라 : 0.125W, 0.25W , 0.5W, 1, 2W, 5W, 등으로 구분
  – 재질에 따라 : 탄소피막 저항기, 권선형 저항기, 금속피막 저항기, 범람형 저항기, 칩 저항기, 어레이 저항기 등으로 구분
  – 탄소피막 저항기 : 소형, 수동소자, 색대로 표시, 가장 흔히 사용되는 수동 소자
  – 범랑형 저항기 : 세라막 저항기, 소비전력이 큰 회로에 사용
• 가변 저항기
  – 저항기 중간에 이동단자 탭 설치 : 세 점 사이의 저항값이 변화되어 전압의 강하 또는 전류를 분배하는 회로에 이용
  – 가변저항기의 이용 : 소리의 크기 조절, 화면의 밝기 조절에 사용, 손잡이를 이용하여 조정하는 가변저항기와 드라이버로 조정하는 반고정저항기

 

권선 저항은 고주파 회로에서는 코일의 분포 용량이 문제가 되어 사용되지 않음

 

## 색갈마다 의미하는 번호 및 저항 값

 

 

 

## 색 저항 판독법

 

1색대와 2색대, 3색대를 붙이고

4색대는 제급근으로 

5색대는 오차 범위로 한다

 

저항 값 : (1 ++ 2 ++ 3) x 4ⁿ = ?Ω 

오차 : 5

 

 

##

 

## 저항에 대하여 약속

 

# 저항에 종류에따른 저항기 곡선

저항기의 머리 꼬리

 

 

블로그 이미지

Or71nH

,

C에서 변수는 값이 저장되는 메모리 영역이나 변수의 유효범위에 따라 구분되는데 auto, static, extern 이 세가지 키워드(keyword)를 이용하여 구분을 할 수 있다.

변수의 유효범위는 크게 지역변수(local variable)와 전역변수(global variable)로 나뉘며, 실제 프로그램 실행시에 변수가 저장되는 메모리상의 위치에따라 높은 주소값부터 거꾸로 사용하여 내려오는 스택(stack)과, 낮은 주소값부터 올라가면서 사용하는 정적데이터영역(.data, .bss)과 힙(heap)으로 구분된다1. 최적화 관점에서 살펴보면, 스택의 경우 해당 범위(scope)에서 자주 액세스 되며 범위가 끝나면 없어지는 임시변수들이 저장되는데, 스택포인터를 순차적으로 이동해가면서 할당되기 때문에 할당속도가 빠르며, 해당 변수들이 자주사용되어서 CPU 캐시의 힛트율이 높은 경우 접근 속도도 더 빨라질 가능성이 있다. 하지만 범위가 끝나면 없어지기때문에 계속적으로 값을 유지하는 것이 불가능하다. 이러한 문제를 해결하기위해서는 정적인 변수들은 정적 데이터 영역에 저장하여 계속 유지되며, 동적인 변수들은 힙에 변수를 할당하고 저장해야한다. 힙은 비순차적으로 메모리 할당/해제가 계속 일어나는 동적인 특성을 갖고있다. 때문에 스택처럼 메모리 할당을 순차적으로 하기가 힘들어서 정적인 방식에 비해 할당 속도가 느린 특성을 갖는다.

이제 각각의 키워드에 따라 해당 변수의 유효범위와 저장되는 영역이 어떻게 결정되는지를 케이스별로 살펴보도록 하자.

    1. auto (자동범위변수)
      • 일반적인 지역 변수 형태로 블럭 안에서만 유효하며 블럭의 실행이 끝나면 소멸
      • 스택에 메모리 할당
      • 일반적으로 C에서 auto 키워드는 생략되어있음. 즉 아무 표시하지 않은 변수는 auto와 같은 의미.
      • C++에서 auto 키워드를 사용할 경우 “자동 타입 추론”이라는 완전히 다른 의미를 가지게되므로 주의할것.
    2. static (정적변수)
      • 블럭 안에서만 유효한 값을 가지지만 자동변수와 같이 없어지지 않고 블럭으로 다시
        돌아왔을 때 이전 값을 다시 이용 가능(스택이 아닌 정적데이터 영역에 저장됨)
      • 초기화를 생략하면 0으로 자동 초기화
      • 정적 데이터영역에 할당
      • static은 사용되는 위치에 따라 의미가 달라지니 주의해서 사용할것.
        • 내부정적변수 : 함수 내부의 변수에 static이 사용된경우, 해당 변수는 함수 내부에서만 사용이 가능. 하지만, 프로그램이 실행되는 동안 계속 값이 유지됨
        • 외부정적변수 : 함수 외부의 전역범위의 변수에 static이 사용된경우, 해당 파일 내부에서는 전역변수처럼 사용되지만, 아닌 다른 소스파일에서는 참조할 수 없음
          (예: 보통 하나의 example.c 파일 내부에서만 사용하기위한 전역변수로 사용됨. 다른 파일이 example.h를 include하더라도 해당 static으로 선언된 전역변수는 보이지 않아 접근 불가)

       

    3. extern (외부변수)
  • 함수 밖의 전역 범위에 선언되며, 프로그램 전체에서 유효하고 다른 파일에서도 참조 가능
  • 초기화를 생략하면 0으로 자동 초기화
  • 정적 데이터영역에 할당
  • extern 변수는 편리하지만 남발하면 프로그램을 복잡하게 하고 나중에 유지보수가
    힘들기 때문에 사용을 최소화 하는 것이 바람직함
  • 외부변수 정의하는 방법은 아래 extern_example 예제를 참조하고 실제 이를 다른파일에서 사용하는 예시는 myfunction.c 를 보면된다.

 

블로그 이미지

Or71nH

,

https://blog.naver.com/tipsware/221275585536

 

C 언어 표준 함수를 위한 헤더 파일과 소스 파일은 어디에 있을까?

: C 언어 관련 전체 목차 http://blog.naver.com/tipsware/221010831969 이 글은 Visual Studio 2017 버...

blog.naver.com

 

C언어 헤더파일 위치 /usr/include

 

1 개요[편집]

Header file location in CC언어 헤더 파일 위치

CentOS /usr/include
Ubuntu /usr/include

2 참고[편집]

Windows (Visual Studio) Program Files (x86)\Microsoft Visual Studio 12.0\VC\include
블로그 이미지

Or71nH

,

이녀석들은 키다

 

저 sem init 가 열쇠고

 

sem_t 가 세트인듯하다

 

#include <stdio.h>
#include <pthread.h>
#include <semaphore.h>

void * read(void * arg);
void * accu(void * arg);
static sem_t sem_one;
static sem_t sem_two;
static int num;

int main(int argc, char *argv[])
{
	pthread_t id_t1, id_t2;
	sem_init(&sem_one, 0, 0);
	sem_init(&sem_two, 0, 1);
	
	pthread_create(&id_t1, NULL, read, NULL);
	pthread_create(&id_t2, NULL, accu, NULL);
	
	pthread_join(id_t1, NULL);
	pthread_join(id_t2, NULL);	

	sem_destroy(&sem_one);
	sem_destroy(&sem_two);
	return 0;
}

void * read(void * arg)
{
	int i;
	for(i=0; i<5; i++)
	{
		fputs("Iput num: ", stdout);

		sem_wait(&sem_two);
		scanf("%d", &num);
		sem_post(&sem_one);
	}
	return NULL;
}

void * accu(void * arg)
{
	int sum=0, i;
	for(i=0; i<5; i++)
	{
		sem_wait(&sem_one);
		sum+=num;
		sem_post(&sem_two);
	}

	printf("Result: %d \n", sum);
	return NULL;
}

저거 음 저 

 

0

1

키 홈모양인듯 다른 자물쇠와 키인듯

 

'[ 충남인력개발원 ] (2019) > ┗TCP&IP' 카테고리의 다른 글

Mysql 리눅스 연동하기  (0) 2019.11.28
리눅스 체팅 연동  (0) 2019.11.28
쓰레드 주고 받기 덮어쓰기 없에기  (0) 2019.11.27
쓰레드 주고 받기 우아아  (0) 2019.11.27
프로세스 쓰레드  (0) 2019.11.27
블로그 이미지

Or71nH

,

쓰레드를 주고 받을때 같은 값을 가져가서 덮어 쓴느 경우가 생긴다

 

그러면 계산된 값이 둘중에 한 애꺼만 받게 되는데 

그래서 한녀석 계산 끝날때까지 기다렷다가

하면 된다

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
#define NUM_THREAD 100

void * thread_inc(void * arg);
void * thread_des(void * arg);

long long num=0;
pthread_mutex_t mutex;

int main(int argc, char *argv[])
{
	pthread_t thread_id[NUM_THREAD];
	int i;

	pthread_mutex_init(&mutex, NULL);

	for(i=0; i<NUM_THREAD; i++)
	{
		if(i%2)
			pthread_create(&(thread_id[i]), NULL, thread_inc, NULL);
		else
			pthread_create(&(thread_id[i]), NULL, thread_des, NULL);
	}

	for(i=0; i<NUM_THREAD; i++)
		pthread_join(thread_id[i], NULL);

	printf("result: %lld \n", num);
	pthread_mutex_destroy(&mutex);
	return 0;
}

void * thread_inc(void * arg)
{
	int i;
	pthread_mutex_lock(&mutex);
	for(i=0; i<50000000; i++)
		num+=1;
	pthread_mutex_unlock(&mutex);
	return NULL;
}

void * thread_des(void * arg)
{
	int i;
	pthread_mutex_lock(&mutex);
	for(i=0; i<50000000; i++)
		num-=1;
	pthread_mutex_unlock(&mutex);
	return NULL;
}

이똥색의 뜻을 알았다

쓰레드 중복되고 계속 돌아갈거같은거 똥색임

상관없음 리눅스에선 

 

언제나 에러와 함께하는 나~

 

변함없는 모습 음음 좋아

 

gcc mutex.c -D_REENTRANT -o mutex -lpthread 

이게 중요함 선언할때 스레드 그 장굼도 넣어준다는 뜻

'[ 충남인력개발원 ] (2019) > ┗TCP&IP' 카테고리의 다른 글

리눅스 체팅 연동  (0) 2019.11.28
쓰레드 키주고 받으면서 하기  (0) 2019.11.27
쓰레드 주고 받기 우아아  (0) 2019.11.27
프로세스 쓰레드  (0) 2019.11.27
git hub 추가 하기  (0) 2019.11.27
블로그 이미지

Or71nH

,