Como saber a localização atual do arquivo antes de salvá-lo?

0

Estou usando o sistema operacional Windows. Suponha que eu estivesse aberto um bloco de notas no windows e, em seguida, digite algo nele, mas não salve-o. Então eu quero saber que o que é a localização atual do arquivo do bloco de notas antes de salvá-lo significa onde ele está atualmente presente, como em Ram, Rom ou na memória Cache ou no disco rígido.

    
por Android developer 20.10.2013 / 14:20

2 respostas

2

Por "localização do arquivo", você pode se referir a uma das seguintes ações:

  • local lógico no disco , ou seja, em qual diretório e subdiretório está o arquivo. Você pode ver isso perguntando o próprio aplicativo, geralmente haverá uma caixa de diálogo "Propriedades" ou selecionando "Salvar como ..." em vez de "Salvar". O primeiro irá propor uma pasta de salvamento padrão que, para a maioria das aplicações , neste caso seria a localização do arquivo existente ... desde que ele exista, isto é, já tenha sido salvo pelo menos uma vez.

  • localização física no disco , ou seja, quais setores da mídia magnética armazenam os dados do arquivo. Existem vários editores de disco que fazem isso, projetados para recuperar arquivos perdidos. A localização física é anexada aos metadados do arquivo e é mapeada em uma área de descrição (ou várias áreas) reservada para esse propósito no sistema de arquivos. No Windows NTFS você tem a tabela de arquivos mestre (MFT).

  • localização lógica na memória , ou seja, qual estrutura de memória contém seu arquivo. A memória do computador é dividida em várias áreas, algumas acessíveis apenas ao kernel do sistema operacional, algumas acessíveis a usuários de alto nível, algumas acessíveis a todos. Seu arquivo deve "viver" no heap do espaço de endereçamento do aplicativo Notepad, que por sua vez reside no userspace . Para saber onde no heap, você precisa de um depurador para abrir o Bloco de Notas e seguir seus ponteiros de memória interna.

  • localização física na memória , ou seja, onde exatamente os espaços acima estão na memória física. Se eles estão lá em tudo. A memória lógica não está necessariamente na RAM; processadores modernos podem "trocar" porções de RAM preciosas, consideradas não usadas ou não suficientemente usadas, para disco ou outro dispositivo, liberando assim a RAM rápida e preciosa para o uso de alguma aplicação mais necessária. Aqueles aplicativos que se encontram trocados não estão cientes disso, porque as informações físicas para lógicas são normalmente escondidas delas pelo kernel. Dessa forma, você como um aplicativo pode "ver" 64 GB de RAM, em um computador com apenas 4 GB de RAM.

A "área de transferência" é outra área de memória, é de propriedade do sistema operacional (na verdade eu acho que pelo Windows Explorer, ou seja, pela interface do usuário que está acima do sistema operacional - mas não tenho certeza), e é < strong> not disponível para o Bloco de Notas para armazenar um "arquivo". Ele pode ser usado pelo Bloco de Notas para armazenar o conteúdo do arquivo por um tempo: Selecionar Tudo, Ctrl C e agora o conteúdo do seu arquivo está na Área de Transferência , e você pode colar em outro lugar. Mas o arquivo ainda está no disco, e sua representação de memória está no heap do Bloco de Notas.

A ROM é somente leitura - está gravada ("flashed") provavelmente apenas uma vez quando o computador é montado, mesmo que algumas ROMs programáveis (PROMs) possam ser religadas mais tarde com um programa apropriado projetado especificamente para essas ROMs . Como tal, você (ou Notepad) não pode armazenar qualquer coisa em uma ROM.

A memória cache é uma memória muito rápida, portanto muito cara, portanto, muito pequena, projetada para manter os dados que a CPU usa com mais frequência. Quando você executar o bloco de notas e abrir um arquivo, partes desse arquivo e partes do código do bloco de notas, irão inserir o cache da CPU (ou caches; pode haver até três níveis, L1, L2, L3 - L1 é mais rápido, portanto mais caro , portanto, menor, mas mesmo L3 é geralmente mais rápido que a RAM comum e fica lá por um tempo. A inspeção de cache é difícil, pois o programa precisa ser executado pela mesma CPU que está usando essa mesma memória cache. Seria como fazer uma cirurgia cerebral em você mesmo.

Outro significado da palavra "Cache" é indicar um bloco de RAM física não utilizada que armazena dados depois de ter sido lido do disco, bem como os dados que devem ser gravados no disco, antes de fazer isso. Dessa forma, as leituras repetidas não "atingem" o disco mais lento e são mais rápidas; e as gravações podem ser feitas todas juntas, em uma ordem mais adequada à organização de dados do disco, e atrasadas até que o sistema não fique tão ocupado. Esses efeitos juntos se combinam para fazer o disco parecer muito mais rápido do que realmente é. Portanto, depois de ler um arquivo no Bloco de Notas, esse arquivo certamente também será no cache de disco RAM por algum tempo, a menos e até que esse espaço seja redimensionado novamente e recuperado para outros usos.

Seu arquivo é ou pode "ser" então, dependendo do significado de "ser":

DISK             [MFT]---->[You]--->[r f]-->
                 -->[ile]     [Your fi]-->[le (previous version)]
                       |     [Y]--[our file (deleted copy, space not yet reclaimed)]
                       |
                       V
INTERNAL DISK     [You][r f][ile]
CACHE                  |
                       V
MEMORY CACHE           [r f][ile][...other stuff...]

NOTEPAD'S HEAP    [Yo]--[fi]--[ur]--[le] [Yo] [other data] [undo buffer: Yrou]

CLIPBOARD         "This is my file's first sentence, which I just copied"

CPU CACHE         [first sent][...other programs' stuff...][just cop]
    
por 20.10.2013 / 15:21
1

Você pode utilizar qualquer ferramenta de depuração padrão, como o WinDBG ou o Olly Debugger, para conseguir isso.

Você basicamente anexa o programa debugger ao notepad e então permite que você veja o programa em execução junto com os locais de memória que utiliza, seus valores, registros e outros recursos.

Por favor, consulte os seguintes URLs para começar o mesmo: -

por 20.10.2013 / 14:27