ata command에서 컴퓨터를 종료할때 발생하는 sequence가 있나요?

neounivers의 이미지

컴퓨터가 전원이 꺼질때 발생하는 ata command가 따로 있는지 궁금해서

질문을 올립니다. command set을 찾아보고는 있지만 전원이 꺼질때 write cache를 flush 시킨다든지 하는

필요한 일련의 과정을 처리해주는 명령어가 따로 보이지 않습니다.

생각해보면 device가 컴퓨터가 종료된다는 사실을 알 필요도 없을거 같기도하구요....
(일련의 필요한 명령을 전달만 해주면 되지 않을지 하는...)

protocol analyzer가 있다면 좋겠지만 없기 때문에 이를 사용할 수는 없고요

혹시 컴퓨터가 종료되면서 발생하는 일련의 명령 sequence가 있다던지 또는 특정 명령어가

따로 존재하는지에 대해 아시는분 있으시면 알려주시면 감사하겠습니다

Undisputed의 이미지

당연히 있을꺼 같은데요.

시스템에서 interrupt가 발생하면, 받아서 해드 정렬하고, 하드 재우고..

^^;; 돌은 던지지 말아주세요.. 지금 구글링 하고 있답니다.

Undisputed의 이미지

rexos33의 이미지

http://sutdaeng.egloos.com/3282269 <= 북마크 했네욤.

모두들 행복하세요~

stypr의 이미지

드라이버 개발자맘입니다. BSD를 예로 들면, device method 의 hook 중에 shutdown 이란 것이 있는데 이 hooker 는 OS 가 shutdown 시에 자동으로 불립니다. 즉 드라이버 개발자가 이 부분을 구현했냐 안했냐 정도겠죠.

리눅스도 비슷한 역활을 하는 것이 있을 겁니다.

neounivers의 이미지

펌웨어를 만들고자 하는 것은 아니고
power loss가 발생했는지를 확인하고 recovery하는 알고리즘을 만들고자 합니다

power loss가 발생했는지 우선 판단을 해야 하는데 그걸 위해 어떻게 알수 있는지
궁금해서.... 찾아보고 있는데 힘드네요

os단에서의 일보다는 하위 디스크로 들어가는 어떤 커맨드가
전원이 정상적으로 꺼지게 하는가를 알기 위한 기준이 필요합니다

사랑천사의 이미지

정확히 어떤건진 모르겠는데 그런게 있는 거 같습니다. 그런데 그게 ACPI 하고 관련 있는 거 같기도 하고...
일반적인 경우에 보니 시스템 종료 다 한 뒤에...(파일 시스템 unmount 까지 하고)
Shutting down sda...
Shutting down sdb...
이러면서 하드 전원 턱 턱 내려가고 나서 컴퓨터가 꺼지던데요. 예전에 컴퓨터가 좀 느릴 때는 저 메세지를 다 볼 수 있었는데 요즈음엔 왜 그런지 저 메세지가 나오지도 않는데 하드가 순차적으로 팍팍 내려가면서 전원이 꺼지더군요. 결론적으로 예전 DOS 시절에 parking 프로그램과 같은 역할을 하는 어떤 명령이 있는 것은 같습니다. 그게 수행된 후 컴퓨터가 꺼지니까요.
중요한건 이게 모든 HDD에서 작동하는 것인가 하는 건데 지금 까지 제가 본 HDD 중에서 아주 오래된 기종을 제외하면 전부 작동했습니다.
-- 사랑천사 --
LECL | Blog
yeosong@gmail.com
yeosong@gmail.com(네이트온) ysnglee2000(Skype)

사람천사

rexos33의 이미지

아주 옛날에 만든건데... 참고하시면 도움이 되실꺼에요...
아래 함수를 호출하기전에 flush등은 모두 끝내고 해야하겠지요... ^_^

사용법:
shutdownIdeDisk("/dev/sda");

소스:
static int shutdownIdeDisk(const char *devpath)
{
#ifndef WIN_SLEEPNOW1
#define WIN_SLEEPNOW1 0xE6
#endif
#ifndef WIN_SLEEPNOW2
#define WIN_SLEEPNOW2 0x99
#endif
uint8 args1[4] = {WIN_SLEEPNOW1, 0, 0, 0};
uint8 args2[4] = {WIN_SLEEPNOW2, 0, 0, 0};
int32 fd;

if ((fd = open(devpath, O_RDWR)) < 0) {
return -1;
}

if (ioctl(fd, HDIO_DRIVE_CMD, &args1) &&
ioctl(fd, HDIO_DRIVE_CMD, &args2)) {
return -1;
}

return 0;
}

댓글 첨부 파일: 
첨부파일 크기
PDF icon D1699r3f-ATA8-ACS.pdf2.1 MB

모두들 행복하세요~