|
Страници по тази тема: 1 | 2 | 3 | (покажи всички)
Тема
|
Re: Приоритети в NT
[re: MиГ]
|
|
Автор |
Balam (непознат
) |
Публикувано | 14.11.01 22:22 |
|
Ah, za suzalenie ne sum zapoznat kak diskovete v dneshno vreme rabotiat :( No mi se struva, che dori i da napravish programa za chetene na sektori direktno ot diska, izmervaneto na vremeto niama da bude mnogo tochno poradi limitacii na architekturata v NT. Za da razberesh za kakvo govoria, bih ti obiasnil kak se pravi chetene na sektori na nisko nivo, no shte triabva da izturpish polzvanite ot men angliiski temini:
Za da se prochete informacia na nisko nivo, client-a obshto vzeto triabva da polzva interface-a za memory manager, caching, i otchasti suotvetnia disk draiver. S pomoshtta na memory manager-a i caching se pravi memory map, zapochvashta sus purvia sektor za chetene, i s dulzina na broia sektori koito triabva da se prochetat. Tazi memory map se konfigurira taka, che kogato exception se poiavi v neia, informaciata se prochita ot diska (podobno na nachina na polzvane na paging file). Ta tazi memory map se markira kato ne-prochetena, i posle se pravi read ot pametta suotvetvashta na vseki edin ot sektorite. Pri vseki memory access, exception se generira, i suotvetnia draiver obsluzva zapulvaneto na pametta s validna informacia (demek taia ot diska). Tova obsluzvane se izvurshva vutreshno v disk draivera, i pochti vinagi stava asynchronous i ot high priority tasks.
Taka che, ako ti po niakakuv nachin uspeesh da zabranish procesi da se izpulniavat kogato iskash da chetesh ot diska, nai-veroiatno cheteneto ot samia disk shte uvisne dokato procesa koito obsluzva cheteneto ne e osvoboden. I poradi sushtoto tova "asynchronous" chetene, izmervaneto na vremeto niama da e tochno, tui kato ne ti e garantirano koga procesa izvurshvasht istinskata rabota zapochva i svurshva.
Moia suvet e da se razrovish malko iz dokumentaciite za disk draiveri, i da vidish dali te ne ti davat vuzmoznost za "query" na loshite sektori.
| |
Тема
|
Re: Приоритети в NT
[re: Balam]
|
|
Автор | MиГ (Нерегистриран) |
Публикувано | 14.11.01 22:38 |
|
Ами ползва се флагът FILE_FLAG_NO_BUFFERING, който изключва кеша, както ще прочетеш по-долу:
Instructs the system to open the file with no intermediate buffering or caching. When combined with FILE_FLAG_OVERLAPPED, the flag gives maximum asynchronous performance, because the I/O does not rely on the synchronous operations of the memory manager. However, some I/O operations will take longer, because data is not being held in the cache.
An application must meet certain requirements when working with files opened with FILE_FLAG_NO_BUFFERING:
File access must begin at byte offsets within the file that are integer multiples of the volume's sector size.
File access must be for numbers of bytes that are integer multiples of the volume's sector size. For example, if the sector size is 512 bytes, an application can request reads and writes of 512, 1024, or 2048 bytes, but not of 335, 981, or 7171 bytes.
Buffer addresses for read and write operations should be sector aligned (aligned on addresses in memory that are integer multiples of the volume's sector size). Depending on the disk, this requirement may not be enforced.
One way to align buffers on integer multiples of the volume sector size is to use VirtualAlloc to allocate the buffers. It allocates memory that is aligned on addresses that are integer multiples of the operating system's memory page size. Because both memory page and volume sector sizes are powers of 2, this memory is also aligned on addresses that are integer multiples of a volume's sector size.
An application can determine a volume's sector size by calling the GetDiskFreeSpace function.
| |
Тема
|
Re: Приоритети в NT
[re: MиГ]
|
|
Автор | MиГ (Нерегистриран) |
Публикувано | 14.11.01 22:42 |
|
А, и виж VirtualAlloc, понеже е спомената.
Това, при положение, че се занимаваш с NT, разбира се :)
| |
Тема
|
Re: Приоритети в NT
[re: MиГ]
|
|
Автор |
Balam (непознат
) |
Публикувано | 14.11.01 22:49 |
|
Tova oznachava, che cheteneto shte "assume" vsichki operacii s cache manager-a sa izlishni, no pri vse tova shte markira tazi pamet kato unavailable, i shte generira exception vuv vsiaka page. Obsluzvanteto na vsichki exceptions e pak asynchronno, i suotvetno shte se izvurshi ot draivera v context-a na drug high priority thread i/ili process. Niama zaobikolki, za suzalenie :(
| |
Тема
|
Re: Приоритети в NT
[re: MиГ]
|
|
Автор |
Balam (непознат
) |
Публикувано | 14.11.01 22:56 |
|
Pamet i caching ot Win32 e obshto vzeto svurzano s normalnia Windows paging file, i suotvetno e obsluzvano na po-visoko nivo, prez failovata sistema.
| |
Тема
|
Re: Приоритети в NT
[re: MиГ]
|
|
Автор |
Mixy (почетен член) |
Публикувано | 21.11.01 01:27 |
|
А как ще изключиш вградения кеш-буфер в самия HDD? Щото ако не го направиш, измерването ще бъде доста относително ...
Mixy
| |
Тема
|
Re: Приоритети в NT
[re: Mixy]
|
|
Автор | MиГ (Нерегистриран) |
Публикувано | 21.11.01 12:46 |
|
Лесно - отивам в средата и изчитам няколко мегабайта. Когато се върна в началото кеша ще е безполезен.
| |
Тема
|
Re: Приоритети в NT
[re: MиГ]
|
|
Автор |
PeterS (виртуален) |
Публикувано | 21.11.01 19:25 |
|
S.M.A.R.T. ne moje li da ti pomogne?
Toi e tochno za takiva fokusi sazdaden!
PeterS
| |
Тема
|
Re: Приоритети в NT
[re: PeterS]
|
|
Автор | _ (Нерегистриран) |
Публикувано | 22.11.01 12:35 |
|
да. затова е.
ама човека не ще да пише driver.
в DDK-то за Win2000 има примери:
The Disk sample is used with Classpnp.sys as disk driver. The sample supports Plug and Play, Power Management, WMI, and failure prediction (S.M.A.R.T.), and it is 64-bit compliant.
+ The DiskPerf filter driver monitors disk-accesses, capturing performance data. It supports Plug and Play, Power Management, and WMI . It is not 64-bit compliant.
| |
Тема
|
Re: Приоритети в NT
[re: _]
|
|
Автор |
MиГ (insane) |
Публикувано | 22.11.01 15:07 |
|
Абе не, по принцип нямам нищо против да напиша, ама го нямам DDK-то, а и къде да го намеря?
Si Vis Pacem, Para Bellum
| |
|
Страници по тази тема: 1 | 2 | 3 | (покажи всички)
|
|
|