Sistemas Operativos. Processos e threads no Windows. Centro de Cálculo Instituto Superior de Engenharia de Lisboa
|
|
- Fátima Cesário Gil
- 7 Há anos
- Visualizações:
Transcrição
1 Sistemas Operativos Processos e threads no Windows Centro de Cálculo Instituto Superior de Engenharia de Lisboa João Pedro Patriarca (jpatri@cc.isel.ipl.pt)
2 Visão conceptual (simplista) de Processo e Thread Processo: 1. Objecto kernel usado pelo sistema operativo para gerir o processo 2. Espaço de endereçamento que contém o módulo executável, DLL s, stacks e heaps Thread: 1. Objecto kernel usado pelo sistema operativo para gerir a thread 2. Stack da thread onde são mantidos os parâmetros e variáveis locais das funções em execução no contexto da thread Anexos: estruturas de dados
3 Função CreateProcess Pode ter o valor NULL (o primeiro token do próximo parâmetro deverá indicar o nome da aplicação) BOOL CreateProcess( PCTSTR pszapplicationname, PTSTR pszcommandline, PSECURITY_ATTRIBUTES psaprocess, PSECURITY_ATTRIBUTES psathread, BOOL binherithandles, DWORD fdwcreate, PVOID pvenvironment, PCTSTR pszcurdir, PSTARTUPINFO psistartinfo, PPROCESS_INFORMATION ppiprocinfo); Pode ser NULL; Consultar bib: en-us/library/ms682425(v=vs.85) Indicam se os handles retornados são herdáveis por futuros processos filhos. A NULL, os handles não são herdáveis Indica se o processo filho herdará os handles herdáveis do processo pai Flags que controlam a classe de prioridade e a criação do processo Pode ter o valor NULL, herdando as variáveis de ambiente do pai A NULL, a directoria é a mesma do processo pai; caso contrário, deverá incluir a drive e directoria Inicialização mínima (consultar bib): STARTUPINFO si = { sizeof(si) }; CreateProcess(..., &si,...); typedef struct _PROCESS_INFORMATION { HANDLE hprocess; HANDLE hthread; DWORD dwprocessid; DWORD dwthreadid; } PROCESS_INFORMATION;
4 Parâmetro fdwcreateflags O valor 0 coloca a thread principal do novo processo na fila de threads Ready Controlo da criação do processo CREATE_DEBUG, CREATE_SUSPENDED, CREATE_NEW_CONSOLE, CREATE_NO_WINDOW, DETACHED_PROCESS Classes de prioridade: REALTIME_PRIORITY_CLASS, HIGH_PRIORITY_CLASS, ABOVE_NORMAL_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS, BELOW_NORMAL_PRIORITY_CLASS, IDLE_NORMAL_PRIORITY_CLASS Normalmente não é especificado: processos criados com a prioridade por omissão
5 Criação de processo passos Creating process Stage 1 Convert and validate parameters and flags Stage 2 Open EXE and create section object Stage 3 Create Windows process object Stage 4 Create Windows thread object Windows subsystem Stage 5 Perform Windows-subsystem specific process initialization Set up for new process and thread New process Start execution of the initial thread Final process/image initialization Stage 6 Stage 7 Return to caller Start execution at entry point to image
6 Terminação de um processo Cenários em que um processo pode terminar A função de entrada da thread primária retorna (forma adequada de terminar uma thread) Uma thread do processo chama a função ExitProcess (evitar este método) Uma thread noutro processo chama a função TerminateProcess (evitar este método) Todas as threads do processo terminam por si mesmas (raramente acontece)
7 Terminação de um processo A função de entrada da thread primária retorna O retorno desta forma garante: Qualquer objecto C++ criado pela thread será destruído usando o seu destrutor Libertação da memória associada ao stack da thread O sistema afecta o código de saída (mantido no objecto kernel do processo) como valor de retorno da função de entrada O sistema decrementa o contador de referências do objecto kernel processo ExitProcess
8 Terminação de um processo Função ExitProcess VOID ExitProcess(UINT fuexitcode); Termina o processo e afecta como código de saída o valor do parâmetro fuexitcode Esta função não retorna No runtime C/C++, quando a thread primária retorna da função de entrada (main), retorna para o código de startup Chama as funções registadas (atexit(pfunc)) para serem executadas na conclusão do programa Chama os destrutores dos objectos alocados estaticamente Aguarda que as threads deste processo terminem Chama a função ExitProcess Se a thread primária terminar com a função ExitThread, o processo só termina se não existirem mais threads no processo
9 Terminação de um processo Função TerminateProcess BOOL TerminateProcess(HANDLE hprocess, UINT fuexitcode); Distingue-se da função ExitProcess por poder ser chamada por qualquer thread dentro ou fora do processo Usar apenas na condição de não se conseguir terminar o processo por qualquer outro método O sistema garante que os recursos associados ao processo são completamente eliminados Acção de terminação assíncrona o que justifica a chamada da função WaitForSingleObject para determinar a conclusão do processo
10 Terminação de um processo Todas as threads do processo terminam por si mesmas Todas as thread retornam da função de entrada ou chamam a função ExitThread ou a função TerminateThread Numa situação destas, o sistema termina o processo marcando o código de saída do processo com o valor do código de saída da última thread que terminou
11 Terminação de um processo Acções realizadas Termina as threads ainda existentes no processo Todos os objectos User e GDI alocados ao processo são libertados Todos os objectos kernel são fechados e eliminados se os contadores de referências dos objectos atingiram o valor 0 O código de saída do processo altera de STILL_ACTIVE (0x103) para o valor passado na função ExitProcess ou TerminateProcess O objecto kernel processo é sinalizado (para efeitos de sincronização) O contador de referências do objecto kernel processo é decrementado BOOL GetExitCodeProcess( HANDLE hprocess, PDWORD pdwexitcode);
12 Processo filho PROCESS_INFORMATION pi; DWORD dwexitcode; // Detached child process. PROCESS_INFORMATION pi; BOOL fsuccess = CreateProcess(..., &pi); if (fsuccess) { // Spawn the child process. BOOL fsuccess = CreateProcess(..., &pi); if (fsuccess) { } CloseHandle(pi.hThread); CloseHandle(pi.hProcess); } // Close the thread handle as soon as it is no longer needed! CloseHandle(pi.hThread); // Suspend our execution until the child has terminated. WaitForSingleObject(pi.hProcess, INFINITE); // The child process terminated; get its exit code. GetExitCodeProcess(pi.hProcess, &dwexitcode); // Close the process ahndle as soon as it is no longer needed. CloseHandle(pi.hProcess);
13 demo11 Terminate process and free resources As experiências, de 1 a 5, ilustram o comportamento na libertação dos recursos alocados nas diferentes formas de terminar um processo
14 Visão conceptual (simplista) de Processo e Thread Processo: 1. Objecto kernel usado pelo sistema operativo para gerir o processo 2. Espaço de endereçamento que contém o módulo executável, DLL s, stacks e heaps Thread: 1. Objecto kernel usado pelo sistema operativo para gerir a thread 2. Stack da thread onde são mantidos os parâmetros e variáveis locais das funções em execução no contexto da thread Anexos: estruturas de dados
15 Função CreateThread HANDLE CreateThread( PSECURITY_ATTRIBUTES psa, DWORD cbstacksize, PTHREAD_START_ROUTINE pfnstartaddr, PVOID pvparam, DWORD dwcreateflags, PDWORD pdwthreadid); Pode ter o valor NULL (atributos de segurança por omissão). Pode ser usado para determinar se um objecto processo filho tem acesso ao objecto kernel thread criado por esta função Memória que ficará committed inicialmente. O valor 0 usa os valores presentes na imagem do executável. DWORD WINAPI <threadfuncname>( PVOID param); O retorno corresponde ao valor de saída (idêntico ao valor de retorno da função main) Pode ter o valor NULL Valor 0: a thread pode ser colocada de imediato em execução Valor CREATE_SUSPENDED: a thread sai do estado Suspended quando for chamada a função ResumeThread Na escrita de programas em C/C++ dever-se-á usar a função _beginthreadex em vez de CreateThread
16 CreateThread steps 1. Transforma parâmetros Windows API em flags nativas e constrói estrutura nativa que descreve os parâmetros objecto 2. Constrói lista de atributos com duas entradas: client ID e endereço TEB 3. NtCreateThread é chamada para criar o contexto do User. Depois chama PspCreateThread para criar um objecto Executive thread suspensa 4. CreateThread realiza acções associadas com o stack 5. CreateThread notifica o subsistema Windows acerca da nova thread para que realize algumas inicializações 6. O handle da nova thread e o seu ID são retornados para o chamador 7. A menos que a thread tenha sido criada com a flag CREATE_SUSPENDED activa, a thread é colocada na fila de threads ready para ser colocada em execução pelo scheduler. Nessa altura executa o passo 7 descrito na iniciação de um processo já no contexto do User
17 Terminação de uma thread Cenários em que uma thread pode terminar A função correspondente ao ponto de entrada da thread retorna (método adequado) A thread mata-se a si própria chamando a função ExitThread (evitar este método) Uma qualquer thread deste processo chama a função TerminateThread (evitar este método) O processo que contém a thread termina (evitar este método)
18 Terminação de uma thread A função correspondente ao ponto de entrada retorna O retorno desta forma garante: Todos os objectos C++ criados no âmbito da thread são destruídos apropriadamente com a chamada dos destrutores respectivos O sistema liberta a memória associada ao stack da thread O sistema afecta o código de saída (mantido no objecto kernel da thread) como valor de retorno da função de entrada O sistema decrementa o contador de referências do objecto kernel thread ExitThread
19 Terminação de uma thread Função ExitThread VOID ExitThread(DWORD dwexitcode); Termina a thread e o sistema operativo elimina todos os recursos alocados à thread Recursos correspondentes a objectos C/C++ não são devidamente destruídos Esta função não retorna Na escrita de programas em C/C++ dever-se-á usar a função _endthreadex em vez de ExitThread
20 Terminação de uma thread Função TerminateThread BOOL TerminateThread(HANDLE hthread, DWORD dwexitcode); Distingue-se da função ExitThread por poder ser chamada por qualquer thread dentro do processo Usar apenas na condição de não se conseguir terminar a thread por qualquer outro método Acção de terminação assíncrona o que justifica a chamada da função WaitForSingleObject para determinar a conclusão da thread Ao contrário da função ExitThread, o stack da thread não é eliminado com a chamada de TerminateThread Qualquer outra thread que mantenha uma referência para uma variável no stack da thread terminada não recebe excepção quando aceder a essa posição de memória Uma DLL não receberá a notificação do fim da thread
21 Terminação de uma thread Terminação de um processo As funções ExitProcess e TerminateProcess terminam todas as threads contidas no processo Todos os recursos do processo serão eliminados incluindo os stacks das threads Contudo não destrói adequadamente todos os recursos Não executa os destrutores dos objectos C++ Não despeja os buffers em memória no disco... No runtime C/C++ quando a função main da thread primária retorna é chamada a função ExitProcess
22 Terminação de uma thread Acções realizadas Liberta todos os handles de objectos User mantidos pela thread O código de saída da thread altera de STILL_ACTIVE (0x103) para o valor passado na função ExitThread ou TerminateThread O objecto kernel thread é sinalizado (para efeitos de sincronização) Se a thread for a última thread activa do processo, o sistema considera o processo terminado também O contador de referências do objecto kernel thread é decrementado BOOL GetExitCodeThread( HANDLE hthread, PDWORD pdwexitcode);
23 demo12 Terminate thread and free resources As experiências, de 1 a 5, ilustram o comportamento na libertação dos recursos alocados nas diferentes formas de terminar uma thread
24 Aspectos internos da thread quando iniciada Thread Kernel object CONTEXT SP EIP Other CPU registers Other properties and statistics Usage count = 2 Suspend count = 1 Exit code = STILL_ACTIVE Signaled = FALSE Thread stack pvparam pfnstartaddr.... NTDLL.dll High address Low address bib: Windows via C/C++, Richter, Nasarre, 5ª edição, fig. 6-1 VOID RtlUserThreadStart(...) {... } VOID RtlUserThreadStart(PTHREAD_START_ROUTINE pfnstartaddr, PVOID pvparam) { try { ExitThread((pfnStartAddr)(pvParam)); } except(unhandledexceptionfilter(getexceptioninformation())) { ExitProcess(GetExceptionCode()); } // NOTE_ We never get here }
25 Thread scheduling Dispatch Conjunto de código associado ao despacho de threads, preemptivo e baseado em prioridades Execução no âmbito do kernel Uma thread tem um tempo limite de posse do CPU (Quantum) Uma thread pode usar menos tempo que o seu Quantum Quando acontece necessidade de scheduling (context switch)? Uma nova thread ficou ready para executar A thread corrente em execução deixou o estado ready ou atingiu o seu Quantum A prioridade de uma thread alterou A afinidade de uma thread a um processador alterou O sistema Windows é preemptivo O sistema Windows lança em execução a thread com maior prioridade
26 Dispatcher database bib: Windows internals, Russinovich, Solomon, fig Process Process CPU 0 ready queues 31 Thread 1 Thread 2 Thread 3 Thread 4 CPU 1 ready queues 31 0 Ready summary Deferred ready queue Campo KPRCB ReadySummary DeferredReadyListHead Tipo Bitmask (32 bits) 0 Ready summary DispatcherReadyListHead Lista simplesmente ligada Array de 32 entradas de listas ready Deferred ready queue
27 Cenários de Scheduling Priority Running Ready Mudança voluntária Preempção Fim do quantum Priority Running Ready To wait state Priority Running Ready From Wait state
28 Níveis de prioridade Nativo versus subsistema Windows Mapeamento Noção de prioridade base e prioridade corrente (no caso de threads) Alteração da prioridade base software comando de linha start (experimentar a aplicação Notepad e observar com o Task Manager)
29 Prioridades de processos e threads Mapeamento entre sistema nativo e subsistema Windows Real-time time critical Real-time Levels Real-time idle Dynamic time critical Dynamic Levels 1-15 Dynamic idle Prioridades nativas Level 0: Used for zero page thread; not available to Win32 applications Processo: classe de prioridade Thread: Prioridade base = Fx(classe de prioridade, prioridade relativa) Prioridade corrente = prioridade base + boost priority Alteração da classe de prioridade Parâmetro fdwcreate da função CreateProcess Linha de comando, com o comando Start: > start /low notepad Após criação, com a função SetPriorityClass Relative Thread Priority Idle Below Normal Process Priority Class Normal Above Normal High Real- Time Time-critical Highest Above normal Normal Below normal Lowest Idle
30 Programação de prioridades Funções relevantes
31 Estados da thread Ready (1) Thread à espera para ser executada; O dispatcher olha para este pool de threads quando procura por uma thread para colocar em execução Deferred ready (7): threads que foram seleccionadas para execução num determinado CPU mas que ainda não foram scheduled Standby (3): thread seleccionada para ser a próxima a correr num determinado CPU; apenas uma thread neste estado por CPU no sistema Running (2) Uma thread entra no estado Running quando o dispatcher executa o Context Switch A execução continua até terminar o seu quantum, ser preemptida por outra thread com maior prioridade, terminar, ou entrar no estado Wait voluntariamente Waiting (5) Entra neste estado: por vontade própria (objectos de sincronização); o sistema operativo entrou no estado Wait no contexto da thread; entre outros Quando sai deste estado poderá ser colocada de novo em execução ou na lista de threads Ready Gate Waiting (8): entra neste estado quando espera por um objecto gate dispatcher (cap. 3) Transition (6): entra neste estado quando a thread está preparada para execução mas ainda lhe faltam recursos em memória (kernel stack) Terminated (4): entra no estado quando a thread termina a execução Initialized (0): usado internamente durante a criação da thread
32 Transição entre estados numa thread bib: Windows internals, Russinovich, Solomon, fig Ready preemption, quantum end Init preempt Standby Deferred ready Running Transition Waiting or Gate waiting voluntary switch Terminate
33 Quantum Quantidade de tempo que uma thread possui o CPU A partir do Window Vista = 2 intervalos de clock Windows Server 2008 = 12 intervalos de clock 1 intervalo de clock (aproximadamente) x86, uniprocessador = 10 ms 64bits ou multiprocessador = 15 ms Quantum boosting Quando um processo é colocado em foreground as threads têm o seu quantum triplicado
34 Afinidade a CPUs Board 1 NUMA Machine Board 2 Board 3 CPU0 CPU1 CPU4 CPU5 CPU8 CPU9 CPU2 CPU3 CPU6 CPU7 CPU10 CPU11 Memory Memory Memory
35 Linhas de cache num contexto multiprocessador Cenário: CPU1 lê 1 byte. O byte solicitado e adjacentes são carregados na cache do CPU1 CPU2 lê o mesmo byte. Os mesmos bytes são carregados na cache do CPU2 CPU1 altera o byte lido O respectivo byte na cache do CPU2 fica inválido; a arquitectura garante a marcação como inválida da linha de cache do CPU2 Boas práticas: Um CPU deverá ter as suas variáveis em memória agrupadas numa linha de cache: as variáveis de um programa que sejam acedidas num intervalo de tempo curto deverão ser declaradas próximas Evitar que dois ou mais CPU s partilhem variáveis em memória: threads que partilhem recursos deverão ter afinidade ao mesmo CPU Separar dados de leitura apenas dos dados que serão lidos e escritos Usar a directiva para o compilador C/C++ declspec(align(#)) int declspec(align(cache_align)) var;
36 Como garante o sistema justiça na distribuição do CPU Priority boost Cenários onde pode acontecer um priority boost (as unidades incrementadas dependem do cenário em causa) 1. Na conclusão de uma operação I/O completion 2. Depois de concluir uma acção de espera por eventos ou semáforos 3. Depois das threads de um processo foreground completarem uma operação de Wait 4. Quando threads GUI acordam 5. Quando uma thread está Ready há demasiado tempo sem ser colocada em execução (CPU starvation) Por cada quantum gasto em execução é decrementada a sua prioridade até atingir o valor da prioridade base Uma thread nestas condições pode ser preemptida por outra de maior prioridade; a thread não perde o seu quanto de execução com a prioridade corrente
37 Priority boost Funções relevantes BOOL SetProcessPriorityBoost( HANDLE hprocess, BOOL bdisablepriorityboost); // true: disable all // process thread s boost BOOL GetProcessPriorityBoost( HANDLE hprocess, PBOOL pbdisablepriorityboost); BOOL SetThreadPriorityBoost( HANDLE hthread, BOOL bdisablepriorityboost); // true: disable thread // boost BOOL GetThreadPriorityBoost( HANDLE hthread, PBOOL pbdisablepriorityboost);
38 Idle thread Idle thread é a thread com menor prioridade (incluindo a Zero Page thread com nível de prioridade 0) A Idle thread, na realidade, não tem prioridade Apenas é colocada em execução quando não existir nenhuma outra thread no estado Ready Só existe uma Idle thread por processador
39 Funções utilizadas na demo: SetProcessAffinityMask; SetThreadAffinityMask; SetThreadPriority; SetProcessPriorityBoost SuspendThread; ResumeThread. Threads Schuduling
40 Considerações sobre a biblioteca runtime C/C++ Preocupações com a biblioteca standard do C num cenário de programação concorrente A biblioteca na sua génese não previa execução concorrente Variáveis com alocação estática: errno, strtok, strerror,... Solução: Cada thread tem as variáveis globais da biblioteca reunidas num bloco O bloco fica alojado num espaço de endereçamento pertencente à thread (TLS Thread Local Storage) Problema: Como associar o bloco a uma thread? Solução: Chamando a função _beginthreadex em vez da função CreateThread e começa aqui a história...
41 Considerações sobre a biblioteca runtime C/C++ Função _beginthreadex (pseudocódigo) As funções _beginthreadex, _threadstartex, _callthreadstartex e _endthreadex estão definidas no módulo <Visual Studio pathname>\vc\crt\src\threadex.c O chamador deverá mapear os tipos dos argumentos da função CreateThread para a função _beginthreadex uintptr_t cdecl _beginthreadex( void* psa, unsigned cbstacksize, unsigned ( stdcall * pfnstartaddr) (void*), void* pvparam, unsigned dwcreateflags, unsigned * pdwthreadid) { _ptiddata ptd; // Pointer to thread s data block uintptr_t thdl; // Thread handles // Allocate data block for the new thread if ((ptd = (_ptiddata)_calloc_crt(1, sizeof(struct _tiddata))) ==NULL) goto error_return; initptd(ptd); // Initialize data block // Save desired thread function and parameter ptd->_initaddr = (void*)pfnstartaddr; ptd->_initarg = pvparam; ptd->handle = (uintptr_t)(-1); // Create the new thread thdl = (uintptr_t)createthread((lpsecurity_attributes)psa, cbstacksize, _threadstartex, (PVOID)ptd, dwcreateflags, pdwthreadid); if (thdl == 0) goto error_return; return (thdl); error_return: _free_crt(ptd); return ((uintptr_t)0l); }
42 Considerações sobre a biblioteca runtime C/C++ Função _threadstartex (pseudocódigo) static unsigned long WINAPI _threadstartex( void* ptd) { // Associate the tiddata block with this thread so _getptd() // will be able to find it in _callthreadstartex TlsSetValue( tlsindex, ptd); ((_ptiddata)ptd)->_tid = GetCurrentThreadId(); // save this thread ID //... initializations not relevant _callthreadstartex(); // call helper function } // The execution code should never reach here //(the thread dies in _callthreadstartex) return (0L);
43 Considerações sobre a biblioteca runtime C/C++ Função _callthreadstartex (pseudocódigo) static void _callthreadstartex( void* ptd) { _ptiddata ptd; // Pointer to thread s data block } // Get the pointer to thread data from TLS ptd = _getptd(); // Wrap desired thread function in SEH frame to handle run-time // errors and signal support try { // Call desired thread function, passing it he desired parameter // Pass thread s exit code value to _endthreadex _endthreadex( ((unsigned (WINAPI*)(void*))(((_ptiddata)ptd)->_initaddr)) (((_ptiddata)ptd)->_initarg) ); } except(_xcptfilter(getexceptioncode(), GetExceptionInformation())) { // The execution code should never reach here _exit(getexceptioncode()); }
44 Considerações sobre a biblioteca runtime C/C++ Função _endthreadex (pseudocódigo) void cdecl _endthreadex( unsigned retcode ) { _ptiddata ptd; // Pointer to thread s data block // Not relevant cleanup // Get the address of this thread s tiddata block ptd = _getptd_noexit(); // Free the tiddata block if (ptd!= NULL) _freeptd(ptd); } // Terminate the thread ExitThread(retcode);
45 Considerações sobre a biblioteca runtime C/C++ Definição de errno _CRTIMP extern int * cdecl _errno (void); #define errno (*_errno()) int * cdecl _errno(void) { _ptiddata ptd = _getptd_noexit(); if (!ptd) return &ErronoNoMem; else return (&ptd->_terrno); } int * p = &errno; if (*p == ENOMEM) {... }
46 Considerações sobre a biblioteca runtime C/C++ Bibliotecas runtime C/C++ Bibliotecas usadas com o Microsoft Visual Studio LibCMt.lib, para ligação estática LibCMtD.lib, para ligação estática com debug MSVCRt.lib, para ligação dinâmica com a DLL MSVCR80.dll (biblioteca usada por omissão na criação de um novo projecto) MSVCRtD.lib, para ligação dinâmica com a DLL MSVCR80.dll com debug MSVCMRt.lib, usada no âmbito de código managed e código nativo MSVCURt.lib, biblioteca compilada com código 100% MSIL Caminho da configuração da biblioteca a usar no Visual Studio Project Properties Configuration Properties C/C++ Code Generation Escolher uma das bibliotecas associadas ao campo Runtime Library Funções da biblioteca que nunca deverão ser usadas unsigned long _beginthread( void ( cdecl *start_address)(void *) unsigned stack_size, void * arglist); void _endthread(void);
47 Tempos associados à execução de uma thread Kernel32.dll, Windows.h ULONGLONG GetTickCount64(); // Não considera a preempção BOOL GetThreadTimes(HANDLE hthread, PFILETIME pftcreationtime, // valor absoluto desde 1 de Janeiro de 1601 PFILETIME pftexittime, // valor absoluto desde 1 de Janeiro de 1601 PFILETIME pftkerneltime, // valor relativo gasto em kernel mode PFILETIME pftusertime); // valor relativo gasto em user mode PFILETIME expresso no número de intervalos de 100 nano-segundos Funções adequadas para medir intervalos de tempo longos (fraca precisão) O tempo de CPU de uma thread é contabilizado com base num temporizador que gera ciclos entre os 10 e 15 ms BOOL GetProcessTimes(<same as GetThreadTimes>); // Tempo gasto por todas as threads do processo
48 Time Stamp Counter (contador de alta resolução) Kernel32.dll, Windows.h Time Stamp Counter: contador de 64 bits do processador que conta o número de ciclos desde que a máquina iniciou BOOL QueryThreadCycleTime(HANDLE ThreadHandle, PULONG64 CycleTime); BOOL QueryProcessCycleTime(HANDLE ProcessHandle, PULONG64 CycleTime); Número de ciclos atribuídos a uma thread ou a todas as threads de um processo (considera a preempção) #define ReadTimeStampCounter() Macro definida no WinNT.h que retorna o valor do contador TSC (usa a função intrínseca rdtsc providenciada pelo compilador C++) Funções medidoras de tempo de alta resolução BOOL QueryPerformanceFrequency(LARGE_INTEGER* plifrequency); BOOL QueryPerformanceCounter(LARGE_INTEGER* plicount); Não consideram a preempção Os diferentes valores de referência poderão perturbar os resultados
49 Bibliografia Windows internals, Russinovich e Solomon, cap. 5, 5ª edição Windows via C/C++, Richter e Nasarre, cap. 4, 6 e 7, 5ª edição MSDN - windows development
50 Anexos
51 Estrutura de dados que representa um processo Bloco EPROCESS (Executive Process Block) bib: Windows internals, Russinovich, Solomon, fig. 5-2 PsActiveProcessHead Kernel process block (or PCB) Process ID Parent process ID Exit status Create and exit times Active process link Quota block Memory management information Exception port Debugger port Device map Process environment block Image filename Image base address Process priority class EPROCESS Primary access token Handle table Windows process block Job object
52 Estrutura de dados Bloco KPROCESS (Kernel Process Block or PCB) bib: Windows internals, Russinovich, Solomon, fig. 5-3 Dispatcher header Kernel time User time Inswap/Outswap list entry Process spinlock Process affinity Resident kernel stack count Process base priority Default thread quantum Process state Thread seed Disable boost flag Process page directory KTHREAD...
53 Estrutura de dados Bloco PEB (Process Environment Block) bib: Windows internals, Russinovich, Solomon, fig. 5-4 Image base address Module list Thread-local storage data Code page data Critical section timeout Number of heaps Heap size information GDI shared handle table Operating system version number information Image version information Image process affinity mask Process heap
54 Variáveis kernel, contadores de performance e funções relacionados com processos Fica apenas a referência dado o volume de informação Windows Internals, Russinovich e Solomon, Cap. 5 Variáveis kernel: tabela 5-2 Contadores de performance: tabela 5-3 Funções relevantes: tabela 5-4
55 Estrutura de dados que representa uma thread Bloco ETHREAD (Executive thread block) bib: Windows internals, Russinovich, Solomon, fig. 5-7 KTHREAD Create and exit times Process ID Thread start address Impersonation information ALPC message information Timer information TEB EPROCESS Access token Pending I/O requests
56 Estrutura de dados Bloco KTHREAD (Kernel thread block) bib: Windows internals, Russinovich, Solomon, fig. 5-8 Dispatcher header Total user time Total kernel time Thread-scheduling information Trap frame Synchronization information List of pending APCs Timer block and wait block List of objects thread is waiting on Kernel stack information System service table Thread-local storage array TEB
57 Estrutura de dados Bloco TEB (Thread environment block) bib: Windows internals, Russinovich, Solomon, fig. 5-9 Exception list Stack base Stack limit Thread ID Active RPC handle LastError value Count of owned critical sections Current locale User32 client information GDI32 information OpenGL information TLS array Subsystem thread information block (TIB) Fiber information PEB Winstock data
58 Variáveis kernel, contadores de performance e funções relacionados com threads Fica apenas a referência dado o volume de informação Windows Internals, Russinovich e Solomon, Cap. 5 Variáveis kernel: tabela 5-11 Contadores de performance: tabela 5-12 Funções relevantes: tabela 5-13
59 Funções da Windows API que promovem scheduling Windows internals, Russinovich e Solomon, Tab. 5-15, 5ª edição
60 Prioridades de processos e threads Mapeamento entre sistema nativo e subsistema Windows Real-time time critical Real-time Levels Prioridades nativas Real-time Processo: classe de prioridade Thread: Prioridade base = Fx(classe de prioridade, prioridade relativa) Prioridade corrente Real-time idle Dynamic time critical Dynamic Levels High 10 Prioridades lógicas Above Normal Normal Below Normal Idle Dynamic idle 1 0 Used for zero page thread; not available to Win32 applications Alteração da classe de prioridade Na criação com a função CreateProcess Na criação, na linha comando com o comando Start: > start /low notepad Após criação, com a função SetPriorityClass bib: Windows internals, Russinovich, Solomon, fig. 5-13
61 Prioridades de processos e threads Mapeamento entre sistema nativo e subsistema Windows Relative Thread Priority Idle Below Normal Process Priority Class Normal Above Normal High Real- Time Time-critical Highest Above normal Normal Below normal Lowest Idle
Sistemas Operativos. Processos e threads no Windows. Jorge Martins baseado parcialmente em slides do Eng.
Sistemas Operativos Processos e threads no Windows Centro de Cálculo Instituto Superior de Engenharia de Lisboa Jorge Martins (jmartins@isel.pt) baseado parcialmente em slides do Eng. João Patriarca Handles
Leia maisWindows Thread Scheduling
Scheduling and Dispatch Windows Thread Scheduling Baseado em slides do Windows Operating System Internals Curriculum Development Kit, desenvolvido para a microsoft por David A. Solomon, Mark E. Russinovich
Leia maisSistemas Operativos. Sincronização de threads com objectos kernel no Windows. Centro de Cálculo Instituto Superior de Engenharia de Lisboa
Sistemas Operativos Sincronização de threads com objectos kernel no Windows Centro de Cálculo Instituto Superior de Engenharia de Lisboa João Pedro Patriarca (jpatri@cc.isel.ipl.pt) Objectos Kernel Processes
Leia maisUNIVERSIDADE ESTADUAL DE PONTA GROSSA SETOR DE CIÊNCIAS AGRÁRIAS E DE TECNOLOGIA DEPARTAMENTO DE INFORMÁTICA
UNIVERSIDADE ESTADUAL DE PONTA GROSSA SETOR DE CIÊNCIAS AGRÁRIAS E DE TECNOLOGIA DEPARTAMENTO DE INFORMÁTICA ISABELLE NEDILHA OKUMA LUIZ RODOLFO MACHADO MECANISMOS DE MANIPULAÇÃO DE PROCESSSOS EM WINDOWS
Leia maisUniversidade Federal de São Carlos Departamento de Computação. Sistemas Operacionais. Gerenciamento de Threads no Windows
Universidade Federal de São Carlos Departamento de Computação Sistemas Operacionais Gerenciamento de Threads no Windows Gerenciamento de Processo Um sistema operacional envolve atividades assíncronas e
Leia maisSistemas Operativos. Gestão de memória no Windows NT
Sistemas Operativos Gestão de memória no Windows NT Windows Internals, Russinovich, cap. 9, Memory Management Windows Via C/C++, Richter, cap. 13, cap. 14. MSDN, http://msdn.microsoft.com/en-us/library/aa366779(v=vs.85).aspx
Leia maisSistemas Operativos. Sincronização de threads com objectos kernel no Windows. Centro de Cálculo Instituto Superior de Engenharia de Lisboa
Sistemas Operativos Sincronização de threads com objectos kernel no Windows Centro de Cálculo Instituto Superior de Engenharia de Lisboa João Pedro Patriarca (jpatri@cc.isel.ipl.pt) Objectos Kernel Processes
Leia maisArquitetura de Sistemas Operativos
Arquitetura de Sistemas Operativos Sistemas Operativos 2011/2012 1 Um processo é uma instância em execução de um programa. No sistema operativo Unix a única forma de se criar um novo processo (processo-filho)
Leia maisFundamentos e Aplicações de Sistemas de Automação. Módulo 2: Processos e Threads
CURSO DE ESPECIALIZAÇÃO EM AUTOMAÇÃO INDUSTRIAL Fundamentos e Aplicações de Sistemas de Automação Módulo 2: Processos e Threads Prof: Constantino Seixas Filho quinta-feira, 16 de setembro de 2004 1 Primeiras
Leia maisProcessos. Nuno Ferreira Neves Faculdade de Ciências de Universidade de Lisboa. Fernando Ramos, Nuno Neves, Sistemas Operativos,
Processos Nuno Ferreira Neves Faculdade de Ciências de Universidade de Lisboa Objetivos da aula Introduzir a noção de processo um programa em execução que é a base de toda a computação Descrever as várias
Leia maisArquitetura de Sistemas Operativos
Arquitetura de Sistemas Operativos Sistemas Operativos 2011/2012 1 Threads Conceito Um processo é um programa em execução. A execução de um processo é sequencial: pode-se caracterizar um processo pelo
Leia maisOO Engenharia Eletrônica
OO Engenharia Eletrônica - Programação em C/C++ Slides 18: Introdução à Multithreading. Introdução à Multithreading: execução concorrente de tarefas. Exemplos usando a biblioteca C Run-time library. Prof.
Leia maisSumário. Sistemas Operativos 1
Sumário Requisitos mínimos do hardware para suportar um SO protegido (ex: Windows/Linux) Mecanismos hardware de suporte nas arquitecturas x86/x64 Sequência de chamada de serviços sistema no Windows a 32
Leia maisProcessos. Conceitos Básicos
Processos Conceitos Básicos Processo (1) Abstração usada pelo S.O. para designar a execução de um programa. É caracterizado por uma thread de execução, um estado corrente e um conjunto associado de recursos
Leia maisProcessos. Conceitos Básicos
Processos Conceitos Básicos Processo Abstração usada pelo S.O. para designar a execução de um programa. (1) É caracterizado por uma thread de execução, um estado corrente e um conjunto associado de recursos
Leia maisProcessos e Tarefas na Win32
Processos e Tarefas na Win32 Processos e Tarefas na Win32 Um processo é uma instância de uma aplicação em execução e é composto por duas partes: Um objecto do kernel que o sistema operativo usa para gerir
Leia maisSistemas de Informação. Sistemas Operacionais
Sistemas de Informação Sistemas Operacionais PROCESSOS E THREADS PARTE I SUMÁRIO 2. PROCESSO: 2.1 Introdução; 2.2 Estrutura do Processo; 2.3 Estados do Processo; 2.4 Mudanças de Estado do Processo; 2.5
Leia maisProcessos. Processo (1) Processo (2) Processo (3) Conceitos Básicos
Processos Conceitos Básicos Processo (1) Abstração usada pelo S.O. para designar a execução de um programa. É caracterizado por uma thread de execução, um estado corrente e um conjunto associado de recursos
Leia maisProcessos. Conceitos Básicos
Processos Conceitos Básicos Processo (1) Abstração usada pelo S.O. para designar a execução de um programa. É caracterizado por uma thread de execução, um estado corrente e um conjunto associado de recursos
Leia maisSistemas Operacionais II
Sistemas Operacionais II Windows Conceitos Básicos Geraldo Braz Junior Departamento de Informática - UFMA 2 Introdução Job Coleção de um ou mais processos gerenciados como uma unidade; Define cotas e limites
Leia maisDisciplina: Sistemas Operacionais
Curso: Análise e Desenvolvimento de Sistemas Disciplina: Sistemas Operacionais Parte 2: Sistemas Multiprocessos, Características dos Multiprocessadores,Sistemas de Clusters, Operações básica do Sistema
Leia maisSistemas Operativos: Implementação de Processos
Sistemas Operativos: Implementação de Processos Pedro F. Souto (pfs@fe.up.pt) March 8, 2012 Sumário: Implementação de Processos Contexto (Estado) dum Processo Comutação de Processos Escalonamento de Processos
Leia maisIntrodução à linguagem C++
Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 2: Introdução à linguagem C++ Introdução à linguagem C++ Conceitos básicos: variáveis, tipos de dados, constantes, I/O, etc. Estruturas
Leia maisRedes de Computadores. INF201 - Fundamentos de Sistemas Operacionais - 2º Período
Redes de Computadores INF201 - Fundamentos de Sistemas Operacionais - 2º Período PARTE II: PROCESSOS E THREADS SUMÁRIO 5. PROCESSO: 5.1 Introdução; 5.2 Estrutura do Processo; 5.3 Estados do Processo; 5.4
Leia maisGestão de memória - Memory Management Unit (MMU)
Gestão de memória - Memory Management Unit (MMU) A distinção entre espaço de edereçamento virtual e espaço de endereçamento físico é fundamental na eficiente gestão do recurso memória física (RAM) por
Leia maisSistemas Operativos Cap. III Gestão de Processos. Prof. José Rogado Universidade Lusófona
Sistemas Operativos Cap. III Gestão de Processos Prof. José Rogado jose.rogado@ulusofona.pt Universidade Lusófona Processos Conceito de Processo Escalonamento de Processos Operações em Processos Cooperação
Leia maisSistemas Operativos 3ª parte - Processos
Sistemas Operativos 3ª parte - Processos Prof. José Rogado jrogado@ulusofona.pt Prof. Pedro Gama pedrogama@gmail.com Universidade Lusófona Adaptação e Notas por Dr. Adriano Couto Processos Conceito de
Leia maisProcessos. Programas e Processos. Aula 1 - Chamadas ao sistema. José Pedro Oliveira fork exit getpid, getppid wait, waitpid
Conteúdo Programas e Aula 1-1 Programas e (jpo@di.uminho.pt) Grupo de Sistemas Distribuídos Departamento de Informática Escola de Engenharia Universidade do Minho Sistemas Operativos I 006-007 3 Referências
Leia maisIntrodução aos Sistemas Operativos
Introdução aos Sistemas Operativos Baseado em: Andrew S. Tanenbaum. Modern Operating Systems, Prentice-Hall, 1992 FEUP/INESC http://www.fe.up.pt/~jlopes/teach/ jlopes@inescn.pt v 1.0, Outubro de 1997 Introdução
Leia maisJoão Correia Lopes. v 1.0, Outubro de Introdução aos Sistemas Operativos v1.0 1
Introdução aos Sistemas Operativos Baseado em: Andrew S. Tanenbaum. Modern Operating Systems, Prentice-Hall, 1992 FEUP/INESC http://www.fe.up.pt/~jlopes/teach/ jlopes@inescn.pt v 1.0, Outubro de 1997 Introdução
Leia mais1 a Questão Unidade I e II (45 pontos)
DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO CURSO DE CIÊNCIA DA COMPUTAÇÃO SISTEMAS OPERACIONAIS I - 1 0 SEM/08 Teste 1 Unidades I e II Total: 200 pontos Aluno: Escore: 1 a Questão Unidade I e II (45 pontos)
Leia maisProcesso. Gerência de Processos. Um programa em execução. Centro de Informática/UFPE :: Infraestrutura de Software
Processo Um programa em execução Gerência de Processos Contexto de Processo Conjunto de Informações para gerenciamento de processo CPU: Registradores Memória: Posições em uso E/S: Estado das requisições
Leia maisSistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios. Aula 06.
Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Aula 06 Processos 2 1 Processos A gerência de um ambiente multiprogramável é
Leia maisProcesso. Gerência de Processos. Um programa em execução. Centro de Informática/UFPE :: Infraestrutura de Software
Processo Um programa em execução Gerência de Processos Contexto de Processo Conjunto de Informações para gerenciamento de processo CPU: Registradores Memória: Posições em uso E/S: Estado das requisições
Leia maisProcesso. Prof. Paulo Cesar F. de Oliveira, BSc, PhD
Prof. Paulo Cesar F. de Oliveira, BSc, PhD 1 Seção 1.1 Introdução 2 Receita do Bolo Programa (Algoritmo) Ingredientes: dados de entrada Quem prepara (confeiteiro): CPU atividade de: Ler a receita Buscar
Leia maisSistemas de Computação. Processos e escalonamento
Processos e escalonamento Sistema operacional Programa que age como intermediário entre o usuário de um computador e o hardware Objetivos: Executar programas do usuário e facilitar a resolução de problemas
Leia maisGestão de memória - Memory Management Unit (MMU)
Gestão de memória - Memory Management Unit (MMU) A distinção entre espaço de edereçamento virtual e espaço de endereçamento físico é fundamental na eficiente gestão do recurso memória física (RAM) por
Leia maisOO Engenharia Eletrônica
OO Engenharia Eletrônica - Programação em C/C++ Slides 19: Multithreading. Threads: Linhas de processamento. Exemplos usando a API do Windows. Prof. Jean Marcelo SIMÃO Threads Introdução/Revisão Threads
Leia maisEstruturas de Sistemas Operacionais
Estruturas de Sistemas Operacionais Sistemas Operacionais - Tópicos Componentes do Sistema Serviços de Sistemas Operacionais Chamadas ao Sistema Estrutura do Sistema Máquinas Virtuais Chamadas ao Sistema
Leia maisFundamentos de Sistemas Operacionais
Fundamentos de Sistemas Operacionais Aula 5 Gerenciamento de Processos Prof. Belarmino Execução de Processos Já vimos que o processador executa os processos entregando uma fatia de tempo (time slice) para
Leia maisGestor de Processos. Gestor de Processos
Gestor de Processos Núcleo do Sistema Operativo Gestor de Processos Entidade do núcleo responsável por suportar a execução dos processos Gestão das Interrupções Multiplexagem do Processador Despacho efectua
Leia maisDEM-Sec.Sistemas Tipos Abstractos de Informação 2006 / Programação
Funções DEM-Sec.Sistemas Tipos Abstractos de Informação 2006 / 07 1 Programação modular Programação modular: divir um programa em módulos mais pequenos Função: um conjunto de instruções que desempenham
Leia maisSistemas Operativos: Escalonamento de Processos
Sistemas Operativos: Escalonamento de Processos Pedro F. Souto (pfs@fe.up.pt) March 29, 2011 Sumário Escalonamento de Processos O Problema Algoritmos de Escalonamento de Processos Leitura Adicional Padrão
Leia maisSistemas Operacionais
ANHANGUERA Sistemas Operacionais Prof. Esp. Rafael Gross Processos Sumário Introdução Conceito de processo Estrutura do processo Estados do processo Mudanças de estado do processo Criação e eliminação
Leia maisAula 3. Executivos (kernels) de tempo-real. Sistemas de Tempo-Real
Sistemas de Tempo-Real Aula 3 Executivos (kernels) de tempo-real Os estados de uma tarefa Arquitetura genérica de um executivo de tempo-real Estruturas e funções típicas do executivo Adaptado dos slides
Leia maisUNIX Gerência de Memória
UNIX Gerência de Memória Introdução Unix implementado sobre muitos computadores diferen tes baseada, segmentada, paginada, segmentada/paginada A gerência de memória garante: Proteção do espaço de endereçamento
Leia maisSumário. Estruturas de suporte à paginação Entrada de tabela de páginas Visão geral da tradução de um endereço virtual
Sumário Estruturas de suporte à paginação Entrada de tabela de páginas Visão geral da tradução de um endereço virtual Gestão de memória no csoker Layout do espaço de endereçamento linear Layout da memória
Leia maisMultiprocessamento. Escalonamento de Processos: Algoritmos. Escalonamento em POSIX. Escalonamento de Threads. Padrão de Execução dum Processo
Sumário Multiprocessamento. Escalonamento de Processos: Algoritmos. Escalonamento em POSIX. Escalonamento de Threads. 1 Padrão de Execução dum Processo Processos (e threads) alternam: execução de instruções;
Leia maisINTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 08. Conceitos sobre processos. Modelos de processos, BCP, contextos, estados de processos.
INTRODUÇÃO AOS SISTEMAS OPERACIONAIS setembro/2013 SEMANA 08 Conceitos sobre processos. Modelos de processos, BCP, contextos, estados de processos. 1 - Introdução O processo computacional, ou simplesmente
Leia maisSistemas Operativos Cap. IV Threads. Prof. José Rogado Universidade Lusófona
Sistemas Operativos Cap. IV Threads Prof. José Rogado jose.rogado@ulusofona.pt Universidade Lusófona Threads Necessidades e Conceito Modelos de Multithreading Problemas de Threading As Pthreads Windows
Leia mais14/05/2017. Conceitos de Processos. Conceitos de Processos. Conceito de processo
Conceito de processo Os computadores executam várias operações ao mesmo tempo. - Compilar um programa; - Enviar um arquivo para a impressora; - Exibir uma página web; - Reproduzir músicas; - Receber mensagens
Leia maisSistemas Operacionais I
UFRJ IM - DCC Sistemas Operacionais I Unidade II - Processos 24/04/2014 Prof. Valeria M. Bastos 1 Organização da Unidade Processos Conceituação Estruturas de Controle Modos de execução do S.O. Estados
Leia maisSistemas Operacionais. Capítulo 5 Processos
Sistemas Operacionais Capítulo 5 Processos Baseado no Livro e Material de Apoio de Arquitetura de Sistemas Operacionais 3ª edição - LTC - 2004 Francis Berenger Machado Luiz Paulo Maia Cap. 5 Processo 1
Leia maisSistemas Operativos: Implementação de Processos
Sistemas Operativos: Implementação de Processos Pedro F. Souto (pfs@fe.up.pt) March 4, 2014 Sumário: Implementação de Processos Contexto (Estado) dum Processo Comutação de Processos Escalonamento de Processos
Leia maisDEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO SISTEMAS OPERACIONAIS I SEM/12 PROVA I. Tempo de Prova: 100 minutos / Escore Máximo: 300 pontos
DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO SISTEMAS OPERACIONAIS I - 1 0 SEM/12 PROVA I Tempo de Prova: 100 minutos / Escore Máximo: 300 pontos Aluno: G A B A R I T O Escore: Responda às perguntas de forma
Leia maisFunção Fundamental do SO
Função Fundamental do SO Gestão do Hardware Uma das funções fundamentais do sistema operativo é gerir os recursos do hardware de um modo o mais transparente possível ao utilizador Recursos principais a
Leia maisLinguagem C. Produção de programas em C (Ligação estática) Centro de Cálculo Instituto Superior de Engenharia de Lisboa
Capítulo 7, secções.1-.9 Capítulo 4, secções.5-.11 Linguagem C Produção de programas em C (Ligação estática) Centro de Cálculo Instituto Superior de Engenharia de Lisboa João Pedro Patriarca (jpatri@cc.isel.ipl.pt)
Leia maisInstituto Superior de Engenharia de Lisboa Licenciatura em Engenharia Informática e de Computadores
Instituto Superior de Engenharia de Lisboa Licenciatura em Engenharia Informática e de Computadores Sistemas Operativos, Verão de 2014/2015 Exame de 1ª Época Parte I Duração 1h 15m 1. [2,5] Considere um
Leia maisGestão de Memória algoritmos e políticas
Gestão de Memória algoritmos e políticas Criação de espaços de endereçamento virtual com gestão eficiente (gasto mínimo) da memória física disponível O que carregar(colocar em memória física) e quando?
Leia maisLinguagem C. Produção de programas em C (Ligação dinâmica) João Pedro Patriarca
Capítulo 7, secções 10-12 Linguagem C Produção de programas em C (Ligação dinâmica) Centro de Cálculo Instituto Superior de Engenharia de Lisboa João Pedro Patriarca (jpatri@cc.isel.ipl.pt) Ligação estática
Leia maisSistemas Operacionais I
UFRJ IM - DCC Sistemas Operacionais I Unidade II - 18/9/2009 Prof. Antonio Carlos Gay Thomé Prof. Aux. Simone Markenson Pech 1 Conceituação Estruturas de Controle Modos de execução do S.O. Estados de um
Leia maisArquitecturas Alternativas. Java Virtual Machine
Arquitecturas Alternativas Java Virtual Machine Compilação da linguagem Java A linguagem Java é uma linguagem interpretada que é executada por uma máquina virtual software denominada JVM (Java Virtual
Leia maisIntrodução. Introdução aos Sistemas Operacionais Volnys Bernal. Sumário. Introdução aos Sistemas Operacionais. Sobre esta apresentação
Volnys Bernal 1998-2016 1 Volnys Bernal 1998-2016 2 Sumário aos Sistemas Operacionais Volnys Borges Bernal volnys@lsi.usp.br Laboratório de Sistemas Integráveis http://www.lsi.usp.br/ Objetivos de um Sistema
Leia maisSistemas Operacionais Aula 07: Scheduling da CPU. Ezequiel R. Zorzal
Sistemas Operacionais Aula 07: Scheduling da CPU Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Objetivos Introduzir o Scheduling da CPU, que é a base dos sistemas operacionais multiprogramados
Leia maisSistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional
Sistemas Operacionais Prof. Pedro Luís Antonelli Anhanguera Educacional Processador INTRODUÇÃO Projetado apenas para executar instruções Não é capaz de distinguir qual programa está em execução Processo
Leia maisSO: Escalonamento. Sistemas Operacionais Flavio Figueiredo (http://flaviovdf.github.io)
SO: Escalonamento Sistemas Operacionais 2017-1 Flavio Figueiredo (http://flaviovdf.github.io) 1 Aonde Estamos Processos Chapt 3 Threads Chapt 4 Vamos pular o Chapt 5 brevemente Sincronização e comunicação
Leia maisQuestões de Provas de Períodos Anteriores
Sistemas Operacionais 2010/1 Questões de Provas de Períodos Anteriores 1) Dois importantes conceitos encontrados no sistema operacional Unix são: (i) modo de execução ( execution mode ); e (ii) contexto
Leia maisBruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Alocação Dinâmica de Memória
Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Alocação Dinâmica de Memória Alocação Estática x Dinâmica C: dois tipos de alocação de memória: Estática e Dinâmica Na alocação estática, o espaço
Leia maisProcedimentos. Sistemas de Computação
Procedimentos Chamada de Procedimentos Utilização de procedimentos: Facilitar entendimento do programa Reutilização de código Passos necessários para execução de um procedimento: Os parâmetros a serem
Leia maisConceito de Processo. Estados de Processos. Diagrama de Estados de Processos
Conceito de Processo Módulo 4: Processos Um Sistema Operacional executa uma variedade de programas: Sistemas de processamento em lotes (batch) processa jobs Sistemas de tempo partilhado (time shared) roda
Leia maisSistemas Operacionais: Sincronização entre processos
Sistemas Operacionais: Sincronização entre processos Sincronização Programa concorrente Executado por diversos processos Acesso concorrente a dados Paralelismo real x Paralelismo aparente Multiprocessadores:
Leia maisDavidson Rodrigo Boccardo
Fundamentos em Sistemas de Computação Davidson Rodrigo Boccardo flitzdavidson@gmail.com Componentes de um SO Gerenciamento de Processos Sistema de Arquivos Gerenciamento de Entrada/Saída Gerenciamento
Leia maisSistemas Operacionais I Parte VI Threads
Sistemas Operacionais I Parte VI Threads Roteiro Introdução Benefícios Ciclo de Vida Estados Modelos Multithreading Modelo Muitos para Um Modelo Um para Um Modelo Muitos para Muitos Sistemas com Threads
Leia maisOO Engenharia Eletrônica
OO Engenharia Eletrônica - Programação em C/C++ Slides 18: Introdução à Multithreading. Introdução à Multithreading: execução concorrente de tarefas. Exemplos usando a API do Windows. Prof. Jean Marcelo
Leia maisLinguagem C Princípios Básicos (parte 1)
Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos
Leia maisSistemas Operacionais
Sistemas Operacionais ESCALONAMENTO DE PROCESSOS Processos e Recursos Conceito de Escalonamento O S.O. gerencia recursos computacionais em benefício dos diversos processos que executam no sistema. A questão
Leia mais7 Mecanismos de gestão de memória. Prof. Ricardo Silva
7 Mecanismos de gestão de memória Prof. Ricardo Silva Introdução Um programa reside no disco sob a forma de ficheiro executável Para ser executado, o programa tem de ser colocado em memória e associado
Leia maisSistemas de Arquivos. (Aula 23)
Sistemas de Arquivos (Aula 23) Funções de um SO Gerência de processos Gerência de memória Gerência de Arquivos Gerência de I/O Sistema de Proteção 2 Sistemas Operacionais 2008/1 Necessidade de Armazenamento
Leia maisIntrodução a Arquitetura de Sistemas Operacionais. Parte 01
Introdução a Arquitetura de Sistemas Operacionais Parte 01 Instituto Federal de Educação, Ciência e Tecnologia do Triângulo Mineiro Prof. Edwar Saliba Júnior Julho / 2017 1/44 Nota Com exceção das figuras
Leia maisProgramação. Cap. 12 Gestão de Memória Dinâmica
Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre Cap. 12 Gestão de Memória Dinâmica Sumário : Utilização de memória Alocação
Leia maisSistemas Operacionais Processos. Carlos Ferraz Jorge Cavalcanti Fonsêca
Sistemas Operacionais Processos Carlos Ferraz (cagf@cin.ufpe.br) Jorge Cavalcanti Fonsêca (jcbf@cin.ufpe.br) Copyright Carlos Ferraz Processo Conceito: Um programa em execução 1. Ao digitar hello, os caracteres
Leia maisLinguagem de Programação I
Linguagem de Programação I Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Exemplo: Explorar Templates e Exceções Incrementar com o uso de STL 2 Crie uma função verificarpalindromo()
Leia maisThreads em Java. Java Threads. Java Componentes: JVM JVM:
Threads em Java (Aula 17) Java Threads Difícil de classificar com user thread ou kernel thread As threads Java são gerenciadas pela JVM. Threads em Java podem ser criadas das seguintes maneiras: Fazendo
Leia maisProgramação Concorrente e Paralela
Multithreading na camada de aplicação 2016 voltando ao PCAM particionamento comunicação aglomeração mapeamento voltando ao PCAM particionamento comunicação aglomeração mapeamento frequentemente resulta
Leia maisSistemas Operacionais II Weig Tatiele Ludmila
Sistemas Operacionais II Weig Tatiele Ludmila Subsistemas, DLLs e serviços do modo usuário Windows Vista consiste em componentes no modo nucleo e componentes no modo usuario. Componentes de modo usuário
Leia maisProcessos. Processos e Recursos (1) Tabelas de Controle do S.O. Processos e Recursos (2)
Processos e Recursos (1) Processos Estruturas de Controle LPRM/DI/UFES 2 Processos e Recursos (2) Tabelas de Controle do S.O. O S.O. gerencia recursos computacionais em benefício dos diversos processos
Leia maisAnhanguera Educacional S.A. Centro Universitário Ibero-Americano
O C++ foi inicialmente desenvolvido por Bjarne Stroustrup durante a década de 1980 com o objetivo de melhorar a linguagem de programação C, mantendo a compatibilidade com esta linguagem. Exemplos de Aplicações
Leia maisIntrodução. Introdução aos Sistemas Operacionais Volnys Bernal. Agenda. Introdução aos Sistemas Operacionais. Sobre esta apresentação
Volnys Bernal 1998-2010 1 Volnys Bernal 1998-2010 2 Agenda aos Sistemas Operacionais Volnys Borges Bernal volnys@lsi.usp.br Laboratório de Sistemas Integráveis http://www.lsi.usp.br/ Objetivos de um Sistema
Leia maisFeatures. 3 rd Generation Processor 386. Intel Register Set Operating Modes.
3 rd Generation Processor 386 P3 (386) = 3 rd Generation Processor Introduced: 0/985 Full 32b processor (32b registers. 32b internal and external databus. 32b address bus) 275k transistors. CM. 32-pin
Leia maisCompiladores Ambiente de Execução
Compiladores Ambiente de Execução Fabio Mascarenhas 2015.1 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica
Leia maisSistemas Operacionais
Sistemas Operacionais Prof. Jó Ueyama Apresentação baseada nos slides da Profa. Kalinka Castelo Branco, do Prof. Dr. Antônio Carlos Sementille e da Profa. Dra. Luciana A. F. Martimiano e nas transparências
Leia maisSISTEMAS EMBARCADOS. Controle de Kernel, gerenciamento de Threads e funções de espera. Prof. André Schneider de Oliveira
Universidade Tecnológica Federal do Paraná (UTFPR) Departamento Acadêmico de Eletrônica (DAELN) SISTEMAS EMBARCADOS Controle de Kernel, gerenciamento de Threads e funções de espera Prof. André Schneider
Leia maisControlo de Execução. K&R: Capitulo 3
Controlo de Execução K&R: Capitulo 3 IAED, 2009/2010 Controlo de Execução Instruções e Blocos if else-if switch Ciclos: Instruçõeswhile e for Instruçãodo-while break e continue goto e labels 2 IAED, 2009/2010
Leia maisProcessos. Pedro Cruz. EEL770 Sistemas Operacionais
Processos Pedro Cruz EEL770 Sistemas Operacionais Aviso O que vamos falar vale para sistemas de processador/ núcleo único Vale também para cada processador/núcleo de um sistema com múltiplos processadores/núcleos
Leia maisUniversidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Sistemas Operacionais Prof. Fabrício Sérgio de Paula
Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Sistemas Operacionais Prof. Fabrício Sérgio de Paula Tópicos Conceito de processo Escalonamento de processos Operações sobre
Leia maisSistemas Distribuídos Aula 3
Sistemas Distribuídos Aula 3 Aula passada Processos IPC Características Ex. sinais, pipes, sockets Aula de hoje Threads Kernel level User level Escalonamento Motivação: Servidor Web Considere Servidor
Leia maisLABORATÓRIO SISTEMAS DE TEMPO REAL
FACULDADE: CENTRO UNIVERSITÁRIO DE BRASÍLIA UniCEUB CURSO: ENGENHARIA DE COMPUTAÇÃO DISCIPLINA: SISTEMAS DE TEMPO REAL E TOLERANTES À FALHA CARGA HORÁRIA: 75 H. A. ANO/SEMESTRE: 2016/01 PROFESSOR: EDUARDO
Leia mais