'KOCW'에 해당되는 글 3건
- 2020.12.06 Custom List
- 2020.11.10 인터럽트
- 2020.11.09 서버 구축
-

· 인터럽트 번호(HW 中 IRQ번호)에 대해서 껐다(mask) 켰다(unmask) 가능
· CPU에 대해서도 인터럽트 번호 껐다가 켰다가 가능.
- 인터럽트 관리가 필요한 경우
· 인터럽트 핸들러가 사용하는 전역 자료구조에 접근할 때
· 경쟁 상태 -> critical section -> semaphore로도 처리할 수 있음 -> schedule(cpu 가져감)
· 인터럽트 핸들러는 매우 빨라야한다. CPU 빼앗겨서는 안됨. semaphore는 cpu를 가져감.
=> 따라서 CPU 발생하지 않는 인터럽트 사용.
· 누가?
· 후반부처리, 시스템 호출
· 인터럽트 핸들러가 받고, 많은 부분을 후반부로 처리(대체로 kernal thread에서 처리) 를 넘긴다.
- 인터럽트 번호 확인
· cat /proc/interrupts

- 인터럽트 관리 함수
· 하드웨어
· 인터럽트 발생시 해당 irq 번호의 인터럽트는 mask 된다.(꺼진다.)
· 그 다음부터는, 해당 irq 번호의 인터럽트가 발생하면 block 된다.
· cpu에 대한 인터럽트 mask 는 드물다.
· 소프트웨어
· irq 번호나 CPU에 대해 인터럽트를 mask 할 수 있다.
· 여러가지 interrupt mask 함수들이 제공된다.
- CPU에 대한 interrupt mask 함수들
· local_irq_disable() · 현재 CPU에 대한 interrupt를 mask 한다. · header : include/linux/irqflags.h · local_irq_enable() · 현재 CPU에 대한 interrupt를 unmask 한다. |
=> 두 함수는 nested call 에서 문제가 발생.

· local_irq_save(flags); // save는 매크로다. 따라서 flags 값이 바뀐다. · unsigned long flags · 현재 CPU에 대한 interrupt 상태를 flags 에 저장하고, 이 CPU에 대한 interrupt를 mask 한다. · local_irq_restore(flags); · CPU에 대한 interrupt 상태를 flags 값으로 복원. |
=> 두 함수는 nested call 에서 문제 해결

- IRQ 번호에 대한 interrupt mask
· void disable_irq(unsigned int irq); // <-> enable_irq(irq)
· header file : include/linux/interrupt.h
· irq: mask 하려는 irq 번호
· disable_irq() 호출 시 관련 irq의 interrupt handler가 이미 실행 중이면 어떻게 하나?
· Ex. 커널스레드나 시스템콜에 의해 CPU1(disable_irq())을 호출 하려는데 , CPU0는 interrupt handler를 사용중.
· 실행 중인 interrupt handler 가 끝날 때까지 대기한 후 interrupt mask
· schedule 아님. busy waiting.
· interrupt context(후반부처리) 에서 사용 가능
· 하지만 가급적이면 interrupt context에서 사용하지 않는 것이 좋다.
· Nested call 가능.
- Database, PHP, JSON 등.
- SERVER
· Apache Web Server
· PHP
· MySQL
-Request
· App에서 Volley 를 통해서 Server에 요청한다.
· Server에서는 Apache가 PHP 실행하고, PHP는 MySQL에 접근을 한다.
-Response
· PHP가 MySQL에서 받은 데이터를 JSON으로 인코딩 하여 Apache를 통해서 반환한다.
· App에서는 JSON을 읽어서 처리한다.
-APM(Apache : xampp 사용)
· 서버 컴퓨터의 방화벽이 꺼져 있어야한다.


· 가상머신을 사용하는 프로그램인 VMware을 사용하는 경우 포트 중복 문제로, 무한정 기다리는 오류가 생길 수 있다.
[오류 해결법 1 : 포트 바꿔보기]

XAMPP 포트 중복 문제 해결하기
PHP로 웹 사이트를 개발할 땐 Apache, MySQL, PHP를 패키지 형태로 사용한다. XAMPP라는 패키지는 Apache, MySQL, PHP, PHPMyAdmin 4가지를 모두 제공하는 패키지다. 여기서 PHPMyAdmin은 웹과 DB를 연동해주는..
code4human.tistory.com
현재 사용중인 PC의 포트 보기


15276 PID 번호를 확인해보면,

[오류 해결법 2 MySQL 삭제 후 다시 설치]위의 모든 것으로도 해결 안될 시, 포트문제가 아닐 수 있다.
xampp 실행파일을 우클릭하여, 관리자 권한으로 실행하면 아래와 같이 Service필드의 콤보박스가 활성화 된다. 해당 콤보박스를 통해 uninstall 할 수 있다.

- MySQL 의 terminal 접근법
· cmd 실행 → cd c:\xampp\mysql\bin → mysql.exe -u root --password → 설정한 비밀번호 입력.

- DB 관리
· drop database if exists songdb; //songdb 데이터베이스가 있으면 해당 데이터베이스 삭제하라. (초기화 같은 느낌)
· create database SongDB // SongDB라고 하는 데이터베이스 생성.
-> default character set utf8 // 한글 설정
-> collate utf8_general_ci;
MariaDB [(none)]> use SongDB; // 생성한 SongDB 데이터 베이스 사용. songdb 대소문자 상관X.(songDb == SongDB == songdB)
Database changed
MariaDB [SongDB]> create table song( // song 테이블 생성.
-> id int(11) not null auto_increment, // 아래는 세부 정보.
-> name varchar(50),
-> model varchar(50),
-> image varchar(255),
-> primary key (id),
-> index(model)
-> ) ENGINE=InnoDB
-> default character set utf8
-> collate utf8_general_ci;
set names euckr; // 한글 사용.
MySQL 터미널 내에서 명령어 입력. |
drop database if exists songdb; create database SongDB default character set utf8 collate utf8_general_ci; use SongDB; create table song( id int(11) not null auto_increment, name varchar(50), model varchar(50), image varchar(255), primary key (id), index(model) ) ENGINE=InnoDB default character set utf8 collate utf8_general_ci; set names euckr; |
이것을 통째로 복사 붙여넣어도 된다. · songdb라는 데이터베이스 생성 · song이라는 테이블 생성까지 한번에 마치게 되는 셈이다. |
· song 테이블에 데이터 삽입
insert into song values (null,"a","b","c.jpg");
· song 테이블 보기
select * from song;
-JSON: JavaScript Object Notation
· 데이터 교환 목적
· 구조적 데이터 표현에 적합함
{} : 객체 [] : 배열
- PHP를 통해서 데이터 베이스에 접근 → 특정 데이터베이스의 특정 테이블의 데이터베이스 정보들을 json 파일로 웹서버에서 열람해보기.

list.php |
<?php header('Content-Type: application/json'); // $ 붙은 것은 변수 // 데이터베이스에 접근 해주는 함수 mysqli_connect(웹서버주소,ID,PW,접근할데이터베이스) $dbc = mysqli_connect('127.0.0.1', 'root','111111','songdb') or die('Error: Connect'); mysqli_query($dbc,"set names utf8"); $query = "select * from song"; $result = mysqli_query($dbc, $query) or die('Error : Query'); $json = array(); if(mysqli_num_rows($result)){ while($row = mysqli_fetch_assoc($result)){ $json['list'][] = $row; } mysqli_free_result($result); } echo json_encode($json); mysqli_close($dbc); ?> |


'KOCW > 코틀린 안드로이드 스튜디오 개발' 카테고리의 다른 글
Custom List (0) | 2020.12.06 |
---|