Linux-2

Size: px
Start display at page:

Download "Linux-2"

Transcription

1 ... 2 INIT... 4 INIT /ETC/INITTAB INIT INIT PROCESS INIT init init init INITTAB ACTION Shutdown

2 init Unix init /sbin/init init process Unix init init root init run level init process root Ctrl-Alt-Del init daemon kill myrun::ondemand:/home/wzhou/mydaemon /home/wzhou/mydaemon kill init process init process

3

4 init init process /etc/inittab /etc/inittab ~]$ cat /etc/inittab # # inittab This file describes how the INIT process should set up # the system in a certain run-level. # # Author: Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org> # Modified for RHS Linux by Marc Ewing and Donnie Barnes # # Default runlevel. The runlevels used by RHS are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) # 3 - Full multiuser mode # 4 - unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) # id:5:initdefault: # System initialization. si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3

5 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6 # Trap CTRL-ALT-DELETE ca::ctrlaltdel:/sbin/shutdown -t3 -r now # When our UPS tells us power has failed, assume we have a few minutes # of power left. Schedule a shutdown for 2 minutes from now. # This does, of course, assume you have powerd installed and your # UPS connected and working correctly. pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" # If power was restored before the shutdown kicked in, cancel it. pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled" # Run gettys in standard runlevels 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6 # Run xdm in runlevel 5 x:5:respawn:/etc/x11/prefdm -nodaemon id:5:initdefault: run level 5 X Window Full multiuser mode si::sysinit:/etc/rc.d/rc.sysinit sysinit (run level) /etc/rc.d/rc.sysinit init/main.c start_kernel() /etc/rc.d/rc.sysinit

6 l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6 run level 0 /etc/rc.d/rc run level 1 /etc/rc.d/rc run level 2 /etc/rc.d/rc run level 3 /etc/rc.d/rc run level 4 /etc/rc.d/rc run level 5 /etc/rc.d/rc run level 6 /etc/rc.d/rc /etc/rc.d/rc ca::ctrlaltdel:/sbin/shutdown -t3 -r now run level root Ctrl+Alt+Del /sbin/shutdown -t3 -r now init Ctrl+Alt+Del shutdown (now) warning 3 # When our UPS tells us power has failed, assume we have a few minutes # of power left. Schedule a shutdown for 2 minutes from now. # This does, of course, assume you have powerd installed and your # UPS connected and working correctly. pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" # If power was restored before the shutdown kicked in, cancel it. pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled" powerokwait /sbin/shutdown -c "Power Restored; Shutdown Cancelled" # Run gettys in standard runlevels 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3

7 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6 /sbin/mingetty # Run xdm in runlevel 5 x:5:respawn:/etc/x11/prefdm -nodaemon

8 run level 5 /etc/x11/prefdm nodaemon inittab init process init process initdefault sysinit /etc/rc.d/rc.sysinit identifier l5 l5:5:wait:/etc/rc.d/rc 5 init process wait init process inittab action /etc/rc.d/rc 5 6 action 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6 6 run level init process /sbin/mingetty tty5 respawn /sbin/mingetty /sbin/mingetty /sbin/mingetty tty1 /etc/x11/prefdm nodaemon ca::ctrlaltdel:/sbin/shutdown -t3 -r now pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled" root Ctrl-Alt-Del init process /sbin/shutdown -t3 -r now UPS /sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" UPS /sbin/shutdown -c "Power Restored; Shutdown Cancelled" init process root Ctrl-Alt-Del UPS Unix signal init process signal

9 init init init man init man inittab init process NAME init, telinit - process control initialization SYNOPSIS /sbin/init [ -a ] [ -s ] [ -b ] [ -z xxx ] [ Ss ] /sbin/telinit [ -t sec ] [ sSQqabcUu ] DESCRIPTION Init Init is the parent of all processes. Its primary role is to create processes from a script stored in the file /etc/inittab (see inittab(5)). This file usually has entries which cause init to spawn gettys on each line that users can log in. It also controls autonomous processes required by any particular system. RUNLEVELS A runlevel is a software configuration of the system which allows only a selected group of processes to exist. The processes spawned by init for each of these runlevels are defined in the /etc/inittab file. Init can be in one of eight runlevels: 0â 6 and S or s. The runlevel is changed by having a privileged user run telinit, which sends appropriate signals to init, telling it which runlevel to change to.

10 Runlevels 0, 1, and 6 are reserved. Runlevel 0 is used to halt the system, runlevel 6 is used to reboot the system, and runlevel 1 is used to get the system down into single user mode. Runlevel S is not really meant to be used directly, but more for the scripts that are executed when entering runlevel 1. For more information on this, see the manpages for shutdown(8) and inittab(5). Runlevels 7-9 are also valid, though not really documented. This is because "traditional" Unix variants donâ t use them. In case youâ re curious, runlevels S and s are in fact the same. Internally they are aliases for the same runlevel. BOOTING After init is invoked as the last step of the kernel boot sequence, it looks for the file /etc/inittab to see if there is an entry of the type initdefault (see inittab(5)). The initdefault entry determines the initial runlevel of the system. If there is no such entry (or no /etc/inittab at all), a runlevel must be entered at the system console. Runlevel S or s bring the system to single user mode and do not require an /etc/inittab file. In single user mode, a root shell is opened on /dev/console. When entering single user mode, init initializes the consoles stty settings to sane values. Clocal mode is set. Hardware speed and handshaking are not changed. When entering a multi-user mode for the first time, init performs the boot and bootwait entries to allow file systems to be mounted before users can log in. Then all entries matching the runlevel are processed. When starting a new process, init first checks whether the file /etc/initscript exists. If it does, it uses this script to start the process. Each time a child terminates, init records the fact and the reason it died in /var/run/utmp and /var/log/wtmp, provided that these files exist.

11 CHANGING RUNLEVELS After it has spawned all of the processes specified, init waits for one of its descendant processes to die, a powerfail signal, or until it is signaled by telinit to change the systemâ s runlevel. When one of the above three conditions occurs, it re-examines the /etc/inittab file. New entries can be added to this file at any time. However, init still waits for one of the above three conditions to occur. To provide for an instantaneous response, the telinit Q or q command can wake up init to re-examine the /etc/inittab file. TELINIT If init is not in single user mode and receives a powerfail signal (SIGPWR), it reads the file /etc/powerstatus. It then starts a command based on the contents of this file: F(AIL) Power is failing, UPS is providing the power. Execute the powerwait and powerfail entries. O(K) The power has been restored, execute the powerokwait entries. L(OW) The power is failing and the UPS has a low battery. Execute the powerfailnow entries. If /etc/powerstatus doesnâ t exist or contains anything else then the letters F, O or L, init will behave as if it has read the letter F. Usage of SIGPWR and /etc/powerstatus is discouraged. Someone wanting to interact with init should use the /dev/initctl control channel - see the source code of the sysvinit package for more documentation about this. When init is requested to change the runlevel, it sends the warning signal SIGTERM to all processes that are undefined in the new runlevel. It then waits 5 seconds before forcibly terminating these processes via the SIGKILL signal. Note that init assumes that all these processes (and their descendants) remain in the same process group which init originally created for them. If any process changes its process group affiliation it will not receive these signals. Such processes need to be terminated separately.

12 /sbin/telinit is linked to /sbin/init. It takes a one-character argument and signals init to perform the appropriate action. The following arguments serve as directives to telinit: 0,1,2,3,4,5 or 6 tell init to switch to the specified run level. a,b,c tell init to process only those /etc/inittab file entries having runlevel a,b or c. Q or q tell init to re-examine the /etc/inittab file. S or s tell init to switch to single user mode. U or u tell init to re-execute itself (preserving the state). No re-examining of /etc/inittab file happens. Run level should be one of Ss12345, otherwise request would be silently ignored. telinit can also tell init how long it should wait between sending processes the SIGTERM and SIGKILL signals. The default is 5 seconds, but this can be changed with the -t sec option. telinit can be invoked only by users with appropriate privileges. The init binary checks if it is init or telinit by looking at its process id; the real initâ s process id is always 1. From this it follows that instead of calling telinit one can also just use init instead as a shortcut. ENVIRONMENT Init sets the following environment variables for all its children: PATH /usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin INIT_VERSION As the name says. Useful to determine if a script runs directly from init.

13 RUNLEVEL The current system runlevel. PREVLEVEL The previous runlevel (useful after a runlevel switch). CONSOLE The system console. This is really inherited from the kernel; however if it is not set init will set it to /dev/console by default. BOOTFLAGS It is possible to pass a number of flags to init from the boot monitor (eg. LILO). Init accepts the following flags: -s, S, single Single user mode boot. In this mode /etc/inittab is examined and the bootup rc scripts are usually run before the single user mode shell is started. 1-5 Runlevel to boot into. -b, emergency Boot directly into a single user shell without running any other startup scripts. -a, auto The LILO boot loader adds the word "auto" to the command line if it booted the kernel with the default command line (without user intervention). If this is found init sets the "AUTOBOOT" environment variable to "yes". Note that you cannot use this for any security measures - of course the user could specify "auto" or -a on the command line manually. -z xxx The argument to -z is ignored. You can use this to expand the command line a bit, so that it takes some more space on the stack. Init can then manipulate the command line so that ps(1) shows the current runlevel.

14 INTERFACE Init listens on a fifo in /dev, /dev/initctl, for messages. Telinit uses this to communicate with init. The interface is not very well documented or finished. Those interested should study the initreq.h file in the src/ subdirectory of the init source code tar archive. SIGNALS Init reacts to several signals: SIGHUP Has the same effect as telinit q. SIGUSR1 On receipt of this signals, init closes and re-opens its control fifo, /dev/initctl. Useful for bootscripts when /dev is remounted. SIGINT Normally the kernel sends this signal to init when CTRL-ALT-DEL is pressed. It activates the ctrlaltdel action. SIGWINCH The kernel sends this signal when the KeyboardSignal key is hit. It activates the kbrequest action. CONFORMING TO Init is compatible with the System V init. It works closely together with the scripts in the directories /etc/init.d and /etc/rc{runlevel}.d. If your system uses this convention, there should be a README file in the directory /etc/init.d explaining how these scripts work. FILES /etc/inittab /etc/initscript /dev/console /var/run/utmp /var/log/wtmp /dev/initctl

15 WARNINGS Init assumes that processes and descendants of processes remain in the same process group which was originally created for them. If the processes change their group, init canâ t kill them and you may end up with two processes reading from one terminal line. DIAGNOSTICS If init finds that it is continuously respawning an entry more than 10 times in 2 minutes, it will assume that there is an error in the command string, generate an error message on the system console, and refuse to respawn this entry until either 5 minutes has elapsed or it receives a signal. This prevents it from eating up system resources when someone makes a typographical error in the /etc/inittab file or the program for the entry is removed. AUTHOR Miquel van Smoorenburg (miquels@cistron.nl), initial manual page by Michael Haardt (u31b3hs@pool.informatik.rwth-aachen.de). SEE ALSO getty(1), login(1), sh(1), runlevel(8), shutdown(8), kill(1), inittab(5), initscript(5), utmp(5) 18 April 2003 INIT(8) /etc/inittab INITTAB(5) Linux System Administrator's Manual INITTAB(5) NAME inittab - format of the inittab file used by the sysv-compatible init process DESCRIPTION The inittab file describes which processes are started at bootup and during normal operation (e.g. /etc/init.d/boot, /etc/init.d/rc, gettys...). Init(8) distinguishes multiple runlevels,

16 each of which can have its own set of processes that are started. Valid runlevels are 0-6 plus A, B, and C for ondemand entries. An entry in the inittab file has the following format: id:runlevels:action:process Lines beginning with '#' are ignored. id is a unique sequence of 1-4 characters which identifies an entry in inittab (for versions of sysvinit compiled with the old libc5 (< ) or a.out libraries the limit is 2 characters). Note: traditionally, for getty and other login processes, the value of the id field is kept the same as the suffix of the corresponding tty, e.g. 1 for tty1. Some ancient login accounting programs might expect this, though I can't think of any. runlevels lists the runlevels for which the specified action should be taken. action describes which action should be taken. process specifies the process to be executed. If the process field starts with a '+' character, init will not do utmp and wtmp accounting for that process. This is needed for gettys that insist on doing their own utmp/wtmp housekeeping. This is also a historic bug. The runlevels field may contain multiple characters for different runlevels. For example, 123 specifies that the process should be started in runlevels 1, 2, and 3. The runlevels for ondemand entries may contain an A, B, or C. The runlevels field of sysinit, boot, and bootwait entries are ignored. When the system runlevel is changed, any running processes that are not specified for the new runlevel are killed, first with SIGTERM, then with SIGKILL. Valid actions for the action field are: respawn The process will be restarted whenever it terminates (e.g. getty).

17 wait The process will be started once when the specified runlevel is entered and init will wait for its termination. once The process will be executed once when the specified runlevel is entered. boot The process will be executed during system boot. The runlevels field is ignored. bootwait The process will be executed during system boot, while init waits for its termination (e.g. /etc/rc). The runlevels field is ignored. off This does nothing. ondemand 1 A process marked with an ondemand runlevel will be executed whenever the specified ondemand runlevel is called. However, no runlevel change will occur (ondemand runlevels are 'a', 'b', and 'c'). initdefault An initdefault entry specifies the runlevel which should be entered after system boot. If none exists, init will ask for a runlevel on the console. The process field is ignored. sysinit The process will be executed during system boot. It will be executed before any boot or bootwait entries. The runlevels field is ignored. powerwait The process will be executed when the power goes down. Init is usually informed about this by a process talking to a UPS connected to the computer. Init will wait for the process to finish before continuing. powerfail As for powerwait, except that init does not wait for the process's completion. 1 Ondemand respawn run level

18 powerokwait This process will be executed as soon as init is informormed that the power has been restored. powerfailnow This process will be executed when init is told that the battery of the external UPS is almost empty and the power is failing (provided that the external UPS and the monitoring process are able to detect this condition). ctrlaltdel The process will be executed when init receives the SIGINT signal. This means that someone on the system console has pressed the CTRL-ALT-DEL key combination. Typically one wants to execute some sort of shutdown either to get into single-user level or to reboot the machine. kbrequest The process will be executed when init receives a signal from the keyboard handler that a special key combination was pressed on the console keyboard. The documentation for this function is not complete yet; more documentation can be found in the kbd-x.xx packages (most recent was kbd-0.94 at the time of this writing). Basically you want to map some keyboard combination to the "KeyboardSignal" action. For example, to map Alt-Uparrow for this purpose use the following in your keymaps file: alt keycode 103 = KeyboardSignal EXAMPLES This is an example of a inittab which resembles the old Linux inittab: # inittab for linux id:1:initdefault: rc::bootwait:/etc/rc 1:1:respawn:/etc/getty 9600 tty1 2:1:respawn:/etc/getty 9600 tty2 3:1:respawn:/etc/getty 9600 tty3 4:1:respawn:/etc/getty 9600 tty4

19 This inittab file executes /etc/rc during boot and starts gettys on tty1-tty4. A more elaborate inittab with different runlevels (see the comments inside): # Level to run in id:2:initdefault: # Boot-time system configuration/initialization script. si::sysinit:/etc/init.d/rcs # What to do in single-user mode. ~:S:wait:/sbin/sulogin # /etc/init.d executes the S and K scripts upon change # of runlevel. # # Runlevel 0 is halt. # Runlevel 1 is single-user. # Runlevels 2-5 are multi-user. # Runlevel 6 is reboot. l0:0:wait:/etc/init.d/rc 0 l1:1:wait:/etc/init.d/rc 1 l2:2:wait:/etc/init.d/rc 2 l3:3:wait:/etc/init.d/rc 3 l4:4:wait:/etc/init.d/rc 4 l5:5:wait:/etc/init.d/rc 5 l6:6:wait:/etc/init.d/rc 6 # What to do at the "3 finger salute". ca::ctrlaltdel:/sbin/shutdown -t1 -h now # Runlevel 2,3: getty on virtual consoles # Runlevel 3: getty on terminal (ttys0) and modem (ttys1) 1:23:respawn:/sbin/getty tty1 VC linux 2:23:respawn:/sbin/getty tty2 VC linux

20 3:23:respawn:/sbin/getty tty3 VC linux 4:23:respawn:/sbin/getty tty4 VC linux S0:3:respawn:/sbin/getty -L 9600 ttys0 vt320 S1:3:respawn:/sbin/mgetty -x0 -D ttys1 FILES /etc/inittab AUTHOR Init was written by Miquel van Smoorenburg This manual page was written by Sebastian Lederer and modified by Michael Haardt SEE ALSO init(8), telinit(8)

21 init init process init process Linux Linux start_kernel() CPU C C stack start_kernel() C main() main() linker main() main() argc argv main() start_kernel() Linux init Linux /init/main.c 483 asmlinkage void init start_kernel(void) Linux 484 { 485 char * command_line; 486 extern struct kernel_param start param[], stop param[]; smp_setup_processor_id(); /* 491 * Need to run as early as possible, to initialize the 492 * lockdep hash: 493 */ 494 unwind_init();

22 495 lockdep_init(); local_irq_disable(); 498 early_boot_irqs_off(); 499 early_init_irq_lock_class(); /* 502 * Interrupts are still disabled. Do necessary setups, then 503 * enable them 504 */ 505 lock_kernel(); 506 boot_cpu_init(); 507 page_address_init(); 508 printk(kern_notice); 509 printk(linux_banner); 611 cpuset_init(); 612 taskstats_init_early(); 613 delayacct_init(); check_bugs(); acpi_early_init(); /* before LAPIC and SMP init */ /* Do the rest non- init'ed, we're now alive */ 620 rest_init(); Linux 621 } 416 static void noinline rest_init(void) 417 releases(kernel_lock) 418 { 419 kernel_thread(init, NULL, CLONE_FS CLONE_SIGHAND); 420 numa_default_policy(); Linux Windows NT 421 unlock_kernel(); Linux

23 422 init init process 423 /* 424 * The boot idle thread must execute schedule() 425 * at least one to get things moving: 426 */ 427 preempt_enable_no_resched(); 428 schedule(); 429 preempt_disable(); /* Call into cpu_idle with preempt disabled */ 432 cpu_idle(); 433 } 716 static int init(void * unused) init process 717 { 718 lock_kernel(); 719 /* 720 * init can run on any cpu. 721 */ 722 set_cpus_allowed(current, CPU_MASK_ALL); 723 /* 724 * Tell the world that we're going to be the grim 725 * reaper of innocent orphaned children. 726 * 727 * We don't want people to have to make incorrect 728 * assumptions about where in the task array this 729 * can be found. 730 */ 731 init_pid_ns.child_reaper = current; cad_pid = task_pid(current); smp_prepare_cpus(max_cpus); do_pre_smp_initcalls(); 738

24 739 smp_init(); 740 sched_init_smp(); cpuset_init_smp(); do_basic_setup(); /* 747 * check if there is an early userspace init. If yes, let it do all 748 * the work 749 */ if (!ramdisk_execute_command) 752 ramdisk_execute_command = "/init"; if (sys_access((const char user *) ramdisk_execute_command, 0)!= 0) { 755 ramdisk_execute_command = NULL; 756 prepare_namespace(); 757 } /* 760 * Ok, we have completed the initial bootup, and 761 * we're essentially up and running. Get rid of the 762 * initmem segments and start the user-mode stuff */ 764 free_initmem(); 765 unlock_kernel(); 766 mark_rodata_ro(); 767 system_state = SYSTEM_RUNNING; 768 numa_default_policy(); if (sys_open((const char user *) "/dev/console", O_RDWR, 0) < 0) 771 printk(kern_warning "Warning: unable to open an initial console.\n"); (void) sys_dup(0); 774 (void) sys_dup(0); 775

25 776 if (ramdisk_execute_command) { 777 run_init_process(ramdisk_execute_command); 778 printk(kern_warning "Failed to execute %s\n", 779 ramdisk_execute_command); 780 } /* 783 * We try each of these until one succeeds. 784 * 785 * The Bourne shell can be used instead of init if we are 786 * trying to recover a really broken machine. 787 */ 788 if (execute_command) { 789 run_init_process(execute_command); 790 printk(kern_warning "Failed to execute %s. Attempting " 791 "defaults...\n", execute_command); 792 } 793 run_init_process("/sbin/init"); run_init_process() 794 run_init_process("/etc/init"); sys_execve() 795 run_init_process("/bin/init"); init process 796 run_init_process("/bin/sh"); panic("no init found. Try passing init= option to kernel."); 799 } run_init_process 710 static void run_init_process(char *init_filename) 711 { 712 argv_init[0] = init_filename; 713 kernel_execve(init_filename, argv_init, envp_init); 714 }

26 254 /* 255 * Do a system call from kernel instead of calling sys_execve so we 256 * end up with proper pt_regs. 257 */ sys_execve 258 int kernel_execve(const char *filename, char *const argv[], char *const envp[]) 259 { 260 long res; 261 asm volatile ("push %%ebx ; movl %2,%%ebx ; int $0x80 ; pop %%ebx" 262 : "=a" ( res) 263 : "0" ( NR_execve),"ri" (filename),"c" (argv), "d" (envp) : "memory"); 264 return res; 265 } init

27 Linux Linux kernel debugger Linux init process init 1 init 2 init 3 init init init run level init 1 init 1 /sbin/init 2594 /* 2595 * Main entry for init and telinit */ 2597 int main(int argc, char **argv) argc 1 argv[0] = /sbin/init 2598 { 2599 char *p; 2600 int f; 2601 int isinit; /* Get my own name */ 2604 if ((p = strrchr(argv[0], '/'))!= NULL) argv[0] = /sbin/init 2605 p++; p init 2606 else 2607 p = argv[0]; 2608 umask(022); /* Quick check */ 2611 if (geteuid()!= 0) { root init root

28 2612 fprintf(stderr, "%s: must be superuser.\n", p); 2613 exit(1); 2614 } /* 2617 * Is this telinit or init? 2618 */ 2619 isinit = (getpid() == 1); init process PID 1 isinit = true 2620 for (f = 1; f < argc; f++) { init if (!strcmp(argv[f], "-i")!strcmp(argv[f], "--init")) 2622 isinit = 1; 2623 break; 2624 } 2625 if (!isinit) exit(telinit(p, argc, argv)); init /* 2628 * Check for re-exec 2629 */ 2630 if (check_pipe(state_pipe)) { init 1 init 3 pipe 2631 init check_pipe() 2632 receive_state(state_pipe); 0 init 0 if L myname = istrdup(argv[0]); 2635 argv0 = argv[0]; 2636 maxproclen = 0; 2637 for (f = 0; f < argc; f++) 2638 maxproclen += strlen(argv[f]) + 1; 2639 reload = 1; 2640 setproctitle("init [%c]",runlevel); init_main(); 2643 } /* Check command line arguments */ init maxproclen = strlen(argv[0]) + 1; L2666

29 2647 for(f = 1; f < argc; f++) { 2648 if (!strcmp(argv[f], "single")!strcmp(argv[f], "-s")) 2649 dfl_level = 'S'; 2650 else if (!strcmp(argv[f], "-a")!strcmp(argv[f], "auto")) 2651 putenv("autoboot=yes"); 2652 else if (!strcmp(argv[f], "-b")!strcmp(argv[f],"emergency")) 2653 emerg_shell = 1; 2654 else if (!strcmp(argv[f], "-z")) { 2655 /* Ignore -z xxx */ 2656 if (argv[f + 1]) f++; 2657 } else if (strchr(" ss", argv[f][0]) 2658 && strlen(argv[f]) == 1) 2659 dfl_level = argv[f][0]; 2660 /* "init u" in the very beginning makes no sense */ 2661 if (dfl_level == 's') dfl_level = 'S'; 2662 maxproclen += strlen(argv[f]) + 1; 2663 } /* Start booting. */ 2666 argv0 = argv[0]; init 1 argv0 = /sbin/init 2667 argv[1] = NULL; 2668 setproctitle("init boot"); 2669 init_main(dfl_level); init 1 init_main(0) dfl_level /*NOTREACHED*/ 2672 return 0; 2673 } 2340 /* 2341 * The main loop 2342 */ 2343 int init_main() 2344 { 2345 CHILD *ch; 2346 struct sigaction sa; 2347 sigset_t sgt;

30 2348 pid_t rc; 2349 int f, st; if (!reload) { init 1 reload 0 if #if INITDEBUG debug init debug init 1 /sbin/init 2354 /* debugger 2355 * Fork so we can debug the init process */ 2357 if ((f = fork()) > 0) { 2358 static const char killmsg[] = "PRNT: init killed.\r\n"; 2359 pid_t rc; while((rc = wait(&st))!= f) 2362 if (rc < 0 && errno == ECHILD) 2363 break; 2364 write(1, killmsg, sizeof(killmsg) - 1); 2365 while(1) pause(); 2366 } 2367 #endif #ifdef linux init,freebsd Macro Linux 2370 /* 2371 * Tell the kernel to send us SIGINT when CTRL-ALT-DEL 2372 * is pressed, and that we want to handle keyboard signals */ 2374 init_reboot(bmagic_soft); reboot(bmagic_soft) CTRL-ALT-DEL init process SIGINT signal man 2 reboot 2375 if ((f = open(vt_master, O_RDWR O_NOCTTY)) >= 0) { 2376 (void) ioctl(f, KDSIGACCEPT, SIGWINCH); 2377 close(f); 2378 } else 2379 (void) ioctl(0, KDSIGACCEPT, SIGWINCH); 2380 #endif 2381

31 2382 /* 2383 * Ignore all signals. signal handler ignore signals 2384 */ signals handler 2385 for(f = 1; f <= NSIG; f++) 2386 SETSIG(sa, f, SIG_IGN, SA_RESTART); 2387 } 2388 signal SIGALRM SIGHUP SIGINT CTRL-ALT-DEL SIGCHLD SIGPWR SIGWINCH SIG SIGSTOP SIGTSTP SIGCONT SIGSTOP SIGSEGV init process SIGALRM SIGHUP SIGINT SIGPWR SIGWINCH SIGUSR1 signal_handler signal_handler signal got_signals init process SIGCHLD chld_handler init process chld_handler

32 init process SIGSTOP SIGTSTP stop_handler init process SIGCONT cont_handler init process SIGSEGV segv_handler init process init process process 2389 SETSIG(sa, SIGALRM, signal_handler, 0); init process signal handler 2390 SETSIG(sa, SIGHUP, signal_handler, 0); 2391 SETSIG(sa, SIGINT, signal_handler, 0); 2392 SETSIG(sa, SIGCHLD, chld_handler, SA_RESTART); 2393 SETSIG(sa, SIGPWR, signal_handler, 0); 2394 SETSIG(sa, SIGWINCH, signal_handler, 0); 2395 SETSIG(sa, SIGUSR1, signal_handler, 0); 2396 SETSIG(sa, SIGSTOP, stop_handler, SA_RESTART); 2397 SETSIG(sa, SIGTSTP, stop_handler, SA_RESTART); 2398 SETSIG(sa, SIGCONT, cont_handler, SA_RESTART); 2399 SETSIG(sa, SIGSEGV, (void (*)(int))segv_handler, SA_RESTART); signal handler SIGALRM SIGHUP SIGINT SIGPWR SIGWINCH SIGUSR1 signal_handler 543 /* 544 * We got a signal (HUP PWR WINCH ALRM INT) 545 */ 546 void signal_handler(int sig) 547 { 548 ADDSET(got_signals, sig); HUP PWR WINCH ALRM INT signal 549 } init_main() process_signals() got_signals 106 sig_atomic_t got_signals; /* Set if we received a signal. */ ADDSET #define ADDSET(set, val) ((set) = (1 << (val))) got_signals signal process_signals() 2238 void process_signals() init process SIGALRM SIGHUP SIGINT SIGPWR SIGWINCH 2239 { SIGUSR1 signal

33 2240 CHILD *ch; 2241 int pwrstat; 2242 int oldlevel; 2243 int fd; 2244 char c; if (ISMEMBER(got_signals, SIGPWR)) { SIGPWR signal UPS fail 2247 INITDBG(L_VB, "got SIGPWR"); 2248 /* See _what_ kind of SIGPWR this is. */ 2249 pwrstat = 0; 2250 if ((fd = open(pwrstat, O_RDONLY)) >= 0) { /etc/powerstatus 2251 c = 0; F O L 2252 read(fd, &c, 1); SIGPWR 2253 pwrstat = c; fail pwrstat 2254 close(fd); 2255 unlink(pwrstat); /etc/powerstatus 2256 } 2257 do_power_fail(pwrstat); powerfail family action action inittab powerfail pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" init process /sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" 2258 DELSET(got_signals, SIGPWR); got_signals SIGPWR 2259 } if (ISMEMBER(got_signals, SIGINT)) { SIGINT signal 2262 INITDBG(L_VB, "got SIGINT"); 2263 /* Tell ctrlaltdel entry to start up */ 2264 for(ch = family; ch; ch = ch->next) 2265 if (ch->action == CTRLALTDEL) 2266 ch->flags &= ~XECUTED; Ctrl-Alt-Del handler 2267 DELSET(got_signals, SIGINT); 2268 }

34 if ( ISMEMBER(got_signals, SIGWINCH) ) { 2271 INITDBG(L_VB, "got SIGWINCH"); 2272 /* Tell kbrequest entry to start up */ 2273 f or(ch = family; ch; ch = ch->next) 2274 if (ch->action == KBREQUEST) 2275 ch->flags &= ~XECUTED; 2276 DELSET(got_signals, SIGWINCH); 2277 } if (ISMEMBER(got_signals, SIGALRM)) { SIGALRM signal 2280 INITDBG(L_VB, "got SIGALRM"); 2281 /* The timer went off: check it out */ 2282 DELSET(got_signals, SIGALRM); 2283 } if ( ISMEMBER(got_signals, SIGCHLD) ) { init process 2286 INITDBG(L_VB, "got SIGCHLD"); 2287 /* First set flag to 0 */ 2288 DELSET(got_signals, SIGCHLD); signal /* See which child this was */ 2291 for(ch = family; ch; ch = ch->next) family 2292 if (ch->flags & ZOMBIE) { 2293 INITDBG(L_VB, "Child died, PID= %d", ch->pid); 2294 ch->flags &= ~(RUNNING ZOMBIE WAITING); 2295 if (ch->process[0]!= '+') 2296 write_utmp_wtmp("", ch->id, ch->pid, DEAD_PROCESS, NULL); 2297 } } if ( ISMEMBER(got_signals, SIGHUP) ) { signal SIGHUP init 2302 INITDBG(L_VB, "got SIGHUP"); process inittab 2303 # if CHANGE_WAIT 2304 /* Are we waiting for a child? */

35 2305 for(ch = family; ch; ch = ch->next) 2306 if (ch->flags & WAITING) break; 2307 if (ch == NULL) 2308 #endif 2309 { 2310 /* We need to go into a new runlevel */ 2311 oldlevel = runlevel; 2312 #ifdef INITLVL 2313 runlevel = read_level(0); 2314 #endif 2315 if (runlevel == 'U') { 2316 runlevel = oldlevel; 2317 re_exec(); 2318 } else { 2319 if (oldlevel!= 'S' && runlevel == 'S') console_stty(); 2320 if (runlevel == '6' runlevel == '0' 2321 runlevel == '1') console_stty(); 2322 read_inittab(); 2323 fail_cancel(); 2324 setproctitle("init [%c]", runlevel); 2325 DELSET(got_signals, SIGHUP); 2326 } 2327 } 2328 } 2329 if (ISMEMBER(got_signals, SIGUSR1)) { signal pipe /dev/initctl 2330 /* 2331 * SIGUSR1 means close and reopen /dev/initctl 2332 */ 2333 INITDBG(L_VB, "got SIGUSR1"); 2334 close(pipe_fd); 2335 pipe_fd = -1; 2336 DELSET(got_signals, SIGUSR1); 2337 } 2338 } init_main()

36 console_init(); console if (!reload) { init 1 0 if /* Close whatever files are open, and reset the console. */ 2406 close(0); setsid() 2407 close(1); daemon process 2408 close(2); 2409 console_stty(); 2410 setsid(); /* 2413 * Set default PATH variable */ 2415 putenv(path_dfl); init 1 PATH="PATH=/bin:/usr/bin:/sbin:/usr/sbin" /* 2418 * Initialize /var/run/utmp (only works if /var is on 2419 * root and mounted rw) 2420 */ 2421 (void) close(open(utmp_file, O_WRONLY O_CREAT O_TRUNC, 0644)); /var/run/utmp /* 2424 * Say hello to the world 2425 */ 2426 initlog(l_co, bootmsg, "booting"); /* 2429 * See if we have to start an emergency shell */ 2431 if (emerg_shell) { shell init 1 if 2432 SETSIG(sa, SIGCHLD, SIG_DFL, SA_RESTART); 2433 if (spawn(&ch_emerg, &f) > 0) { 2434 while((rc = wait(&st))!= f) 2435 if (rc < 0 && errno == ECHILD)

37 2436 break; 2437 } 2438 SETSIG(sa, SIGCHLD, chld_handler, SA_RESTART); 2439 } /* 2442 * Start normal boot procedure */ 2444 runlevel = '#'; init read_inittab(); /etc/inittab } else { re-exec init process inittab init 1 L /* 2449 * Restart: unblock signals and let the show go on 2450 */ 2451 initlog(l_co, bootmsg, "reloading"); 2452 sigfillset(&sgt); 2453 sigprocmask(sig_unblock, &sgt, NULL); 2454 } 2455 start_if_needed(); family /etc/inittab action inittab while(1) { init process init process init daemon process init 2459 /* See if we need to make the boot transitions. */ 2460 boot_transitions(); 2461 INITDBG(L_VB, "init_main: waiting.."); /* Check if there are processes to be waited on. */ 2464 for(ch = family; ch; ch = ch->next) 2465 if ((ch->flags & RUNNING) && ch->action!= BOOT) break; #if CHANGE_WAIT

38 2468 /* Wait until we get hit by some signal. */ 2469 while (ch!= NULL && got_signals == 0) { daemon process 2470 if (ISMEMBER(got_signals, SIGHUP)) { SIGHUP init process inittab 2471 /* See if there are processes to be waited on. */ 2472 for(ch = family; ch; ch = ch->next) wait boot 2473 if (ch->flags & WAITING) break; 2474 } 2475 if (ch!= NULL) check_init_fifo(); 2476 } 2477 #else /* CHANGE_WAIT */ 2478 if (ch!= NULL && got_signals == 0) check_init_fifo(); 2479 #endif /* CHANGE_WAIT */ check_init_fifo() init 2 init 3 /dev/initctl pipe /* Check the 'failing' flags */ 2482 fail_check(); /* Process any signals. */ 2485 process_signals(); signal init process signal got_signals 2486 init process init process signal signal L /* See what we need to start up (again) */ 2488 start_if_needed(); family node 2489 } (action) 2490 /*NOTREACHED*/ 2491 } init process inittab Inittab init process /* Information about a process in the in-core inittab */ typedef struct _child_ { int flags; /* Status of this entry */ int exstat; /* Exit status of process */

39 int pid; /* Pid of this process */ time_t tm; /* When respawned last */ int count; /* Times respawned in the last 2 minutes */ char id[8]; /* Inittab id (must be unique) */ char rlevel[12]; /* run levels */ int action; /* what to do (see list below) */ char process[128]; /* The command line */ struct _child_ *new; /* New entry (after inittab re-read) */ struct _child_ *next; /* For the linked list */ } CHILD; Inittab 3:2345:respawn:/ sbin/mingetty tty3 init process CHILD field id[8] rlevel[12] action process[128] Respawn /sbin/mingetty tty3 flags process exstat process exit() pid process process identifier tm respawn process init process respawn count respawn ondemanded process 2 (spawn) init process process next family

40 family /etc/inittab id:5:initdefault: CHILD Node si::sysinit:/etc/rc.d/rc.sysinit CHILD Node l0:0:wait:/etc/rc.d/rc 0 CHILD Node l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6 read_inittab ca::ctrlaltdel:/sbin/shutdown -t3 -r now 3:2345:respawn:/sbin/mingetty tty3 CHILD Node N

41 1108 void read_inittab(void) 1109 { 1110 FILE *fp; /* The INITTAB file */ 1111 CHILD *ch, *old, *i; /* Pointers to CHILD structure */ 1112 CHILD *head = NULL; /* Head of linked list */ 1113 #ifdef INITLVL 1114 struct stat st; /* To stat INITLVL */ 1115 #endif 1116 sigset_t nmask, omask; /* For blocking SIGCHLD. */ 1117 char buf[256]; /* Line buffer */ 1118 char err[64]; /* Error message. */ 1119 char *id, *rlevel, 1120 *action, *process; /* Fields of a line */ 1121 char *p; 1122 int lineno = 0; /* Line number in INITTAB file */ 1123 int actionno; /* Decoded action field */ 1124 int f; /* Counter */ 1125 int round; /* round 0 for SIGTERM, 1 for SIGKILL */ 1126 int foundone = 0; /* No killing no sleep */ 1127 int talk; /* Talk to the user */ 1128 int done = 0; /* Ready yet? */ #if DEBUG 1131 if (newfamily!= NULL) { 1132 INITDBG(L_VB, "PANIC newfamily!= NULL"); 1133 exit(1); 1134 } 1135 INITDBG(L_VB, "Reading inittab"); 1136 #endif /* 1139 * Open INITTAB and real line by line */ 1141 if ((fp = fopen(inittab, "r")) == NULL) /etc/inittab 1142 initlog(l_vb, "No inittab file found"); 1143

42 1144 while(!done) { inittab newfamily newfamily 1145 /* family 1146 * Add single user shell entry at the end */ 1148 if (fp == NULL fgets(buf, sizeof(buf), fp) == NULL) { 1149 done = 1; 1150 /* 1151 * See if we have a single user entry */ 1153 for(old = newfamily; old; old = old->next) 1154 if (strpbrk(old->rlevel, "S")) break; 1155 if (old == NULL) 1156 snprintf(buf, sizeof(buf), "~~:S:wait:%s\n", SULOGIN); 1157 else 1158 continue; 1159 } 1160 lineno++; 1161 /* 1162 * Skip comments and empty lines 1163 */ 1164 for(p = buf; *p == ' ' *p == '\t'; p++) 1165 ; 1166 if (*p == '#' *p == '\n') continue; # /* 1169 * Decode the fields 1170 */ id:runlevels:action:process id = strsep(&p, ":"); : strsep 1172 rlevel = strsep(&p, ":"); 1173 action = strsep(&p, ":"); 1174 process = strsep(&p, "\n"); 1175 init manual /* 1177 * Check if syntax is OK. Be very verbose here, to

43 1178 * avoid newbie postings on comp.os.linux.setup :) 1179 */ 1180 err[0] = 0; 1181 if (!id!*id) strcpy(err, "missing id field"); 1182 if (!rlevel) strcpy(err, "missing runlevel field"); 1183 if (!process) strcpy(err, "missing process field"); 1184 if (!action!*action) 1185 strcpy(err, "missing action field"); 1186 if (id && strlen(id) > sizeof(utproto.ut_id)) 1187 sprintf(err, "id field too long (max %d characters)", 1188 (int)sizeof(utproto.ut_id)); 1189 if (rlevel && strlen(rlevel) > 11) 1190 strcpy(err, "rlevel field too long (max 11 characters)"); 1191 if (process && strlen(process) > 127) 1192 strcpy(err, "process field too long"); 1193 if (action && strlen(action) > 32) 1194 strcpy(err, "action field too long"); 1195 if (err[0]!= 0) { 1196 initlog(l_vb, "%s[%d]: %s", INITTAB, lineno, err); 1197 INITDBG(L_VB, "%s:%s:%s:%s", id, rlevel, action, process); 1198 continue; 1199 } /* 1202 * Decode the "action" field 1203 */ init action actions[] identifier 1204 actionno = -1; 1205 for(f = 0; actions[f].name; f++) 1206 if (strcasecmp(action, actions[f].name) == 0) { 1207 actionno = actions[f].act; 1208 break; 1209 } 1210 if (actionno == -1) { action( actions[] ) 1211 initlog(l_vb, "%s[%d]: %s: unknown action field", 1212 INITTAB, lineno, action); 1213 continue;

44 1214 } /* 1217 * See if the id field is unique 1218 */ identifier CHILD id /etc/inittab id 1219 for(old = newfamily; old; old = old->next) { 1220 if(strcmp(old->id, id) == 0 && strcmp(id, "~~")) { 1221 initlog(l_vb, "%s[%d]: duplicate ID field \"%s\"", 1222 INITTAB, lineno, id); 1223 break; 1224 } 1225 } 1226 if (old) continue; /* 1229 * Allocate a CHILD structure 1230 */ 1231 ch = imalloc(sizeof(child)); CHILD node /* 1234 * And fill it in. CHILD node 1235 */ 1236 ch->action = actionno; action 1237 strncpy(ch->id, id, sizeof(utproto.ut_id) + 1); /* Hack for different libs. */ 1238 strncpy(ch->process, process, sizeof(ch->process) - 1); 1239 if (rlevel[0]) { run level 1240 for(f = 0; f < sizeof(rlevel) - 1 && rlevel[f]; f++) { 1241 ch->rlevel[f] = rlevel[f]; 1242 if (ch->rlevel[f] == 's') ch->rlevel[f] = 'S'; 1243 } 1244 strncpy(ch->rlevel, rlevel, sizeof(ch->rlevel) - 1);

45 1245 } else { run level run level process 1246 strcpy(ch->rlevel, " "); 1247 if (ISPOWER(ch->action)) 1248 strcpy(ch->rlevel, "S "); 1249 } action 1250 /* 1251 * We have the fake runlevel '#' for SYSINIT and 1252 * '*' for BOOT and BOOTWAIT */ SYSINIT action '#' BOOT action '*' run level 0 9 'S' # * run level SYSINIT BOOT action 1254 if (ch->action == SYSINIT) strcpy(ch->rlevel, "#"); 1255 if (ch->action == BOOT ch->action == BOOTWAIT) 1256 strcpy(ch->rlevel, "*"); /* 1259 * Now add it to the linked list. Special for powerfail */ /etc/inittab newfamily family init run level family init /etc/inittab 1261 if (ISPOWER(ch->action)) { action POWERWAIT POWERFAIL POWEROKWAIT 1262 POWERFAILNOW CTRLALTDEL Ctrl+Alt+Del 1263 /* 1264 * Disable by default 1265 */ 1266 ch->flags = XECUTED; startup() action flag 1267 XECUTED 1268 /* Ctrl+Alt+Del /etc/inittab CTRLALTDEL

46 Action process disable ( XECUTED ) Ctrl+Alt+Del enable action family 1269 * Tricky: insert at the front of the list */ 1271 old = NULL; 1272 for(i = newfamily; i; i = i->next) { 1273 if (!ISPOWER(i->action)) break; 1274 old = i; 1275 } 1276 /* 1277 * Now add after entry "old" 1278 */ 1279 if (old) { 1280 ch->next = i; 1281 old->next = ch; 1282 if (i == NULL) head = ch; 1283 } else { 1284 ch->next = newfamily; 1285 newfamily = ch; 1286 if (ch->next == NULL) head = ch; 1287 } 1288 } else { action KBREQUEST SIGWINCH 1289 /* 1290 * Just add at end of the list 1291 */ 1292 if (ch->action == KBREQUEST) ch->flags = XECUTED; 1293 ch->next = NULL; 1294 if (head) 1295 head->next = ch; 1296 else 1297 newfamily = ch; 1298 head = ch; 1299 } 1300

47 1301 /* 1302 * Walk through the old list comparing id fields 1303 */ 1304 for(old = family; old; old = old->next) 1305 if (strcmp(old->id, ch->id) == 0) { 1306 old->new = ch; 1307 break; 1308 } 1309 } 1310 /* 1311 * We're done */ 1313 if (fp) fclose(fp); /etc/inittab init daemon init init 3 kernel init(init 1) daemon init init /* 1316 * Loop through the list of children, and see if they need to 1317 * be killed */ INITDBG(L_VB, "Checking for children to kill"); 1321 for(round = 0; round < 2; round++) { 1322 talk = 1; 1323 for(ch = family; ch; ch = ch->next) { init init 1 family 1324 ch->flags &= ~KILLME; round = 0 talk = 1 foundone = L /* 1327 * Is this line deleted? 1328 */ 1329 if (ch->new == NULL) ch->flags = KILLME;

48 /* 1332 * If the entry has changed, kill it anyway. Note that 1333 * we do not check ch->process, only the "action" field * This way, you can turn an entry "off" immediately, but 1335 * changes in the command line will only become effective 1336 * after the running version has exited */ 1338 if (ch->new && ch->action!= ch->new->action) ch->flags = KILLME; /* 1341 * Only BOOT processes may live in all levels 1342 */ 1343 if (ch->action!= BOOT && 1344 strchr(ch->rlevel, runlevel) == NULL) { 1345 /* 1346 * Ondemand procedures live always, 1347 * except in single user 1348 */ 1349 if (runlevel == 'S'!(ch->flags & DEMAND)) 1350 ch->flags = KILLME; 1351 } /* 1354 * Now, if this process may live note so in the new list 1355 */ 1356 if ((ch->flags & KILLME) == 0) { 1357 ch->new->flags = ch->flags; 1358 ch->new->pid = ch->pid; 1359 ch->new->exstat = ch->exstat; 1360 continue; 1361 } /* 1365 * Is this process still around? 1366 */

49 1367 if ((ch->flags & RUNNING) == 0) { 1368 ch->flags &= ~KILLME; 1369 continue; 1370 } 1371 INITDBG(L_VB, "Killing \"%s\"", ch->process); 1372 switch(round) { 1373 case 0: /* Send TERM signal */ 1374 if (talk) 1375 initlog(l_co, 1376 "Sending processes the TERM signal"); 1377 kill(-(ch->pid), SIGTERM); 1378 foundone = 1; 1379 break; 1380 case 1: /* Send KILL signal and collect status */ 1381 if (talk) 1382 initlog(l_co, 1383 "Sending processes the KILL signal"); 1384 kill(-(ch->pid), SIGKILL); 1385 break; 1386 } 1387 talk = 0; } 1390 /* 1391 * See if we have to wait 5 seconds 1392 */ 1393 if (foundone && round == 0) { init init 1 round = 0, foundone = /* if L * Yup, but check every second if we still have children */ 1397 for(f = 0; f < sltime; f++) { 1398 for(ch = family; ch; ch = ch->next) { 1399 if (!(ch->flags & KILLME)) continue; 1400 if ((ch->flags & RUNNING) &&!(ch->flags & ZOMBIE)) 1401 break; 1402 } 1403 if (ch == NULL) {

50 1404 /* 1405 * No running children, skip SIGKILL 1406 */ 1407 round = 1; 1408 foundone = 0; /* Skip the sleep below. */ 1409 break; 1410 } 1411 do_sleep(1); 1412 } 1413 } 1414 } /* 1417 * Now give all processes the chance to die and collect exit statuses */ 1419 if (foundone) do_sleep(1); init 1 foundone = for(ch = family; ch; ch = ch->next) family L if (ch->flags & KILLME) { 1422 if (!(ch->flags & ZOMBIE)) 1423 initlog(l_co, "Pid %d [id %s] seems to hang", ch->pid, 1424 ch->id); 1425 else { 1426 INITDBG(L_VB, "Updating utmp for pid %d [id %s]", 1427 ch->pid, ch->id); 1428 ch->flags &= ~RUNNING; 1429 if (ch->process[0]!= '+') 1430 write_utmp_wtmp("", ch->id, ch->pid, DEAD_PROCESS, NULL); 1431 } 1432 } /* 1435 * Both rounds done; clean up the list */ 1437 sigemptyset(&nmask); 1438 sigaddset(&nmask, SIGCHLD); 1439 sigprocmask(sig_block, &nmask, &omask); 1440 for(ch = family; ch; ch = old) { init 1 family L1444

51 1441 old = ch->next; 1442 free(ch); 1443 } 1444 family = newfamily; newfamily 1445 for(ch = family; ch; ch = ch->next) ch->new = NULL; 1446 newfamily = NULL; 1447 sigprocmask(sig_setmask, &omask, NULL); #ifdef INITLVL 1450 /* 1451 * Dispose of INITLVL file */ /etc/initrunlvl symbol link 1453 if (lstat(initlvl, &st) >= 0 && S_ISLNK(st.st_mode)) { /etc/initrunlvl symbol link 1454 /* 1455 * INITLVL is a symbolic link, so just truncate the file */ 1457 close(open(initlvl, O_WRONLY O_TRUNC)); 1458 } else { 1459 /* 1460 * Delete INITLVL file */ 1462 unlink(initlvl); 1463 } 1464 #endif 1465 #ifdef INITLVL /* 1467 * Dispose of INITLVL2 file */ /var/log/initrunlvl symbol link 1469 if (lstat(initlvl2, &st) >= 0 && S_ISLNK(st.st_mode)) { 1470 /* 1471 * INITLVL2 is a symbolic link, so just truncate the file */ 1473 close(open(initlvl2, O_WRONLY O_TRUNC)); 1474 } else { 1475 /*

52 1476 * Delete INITLVL2 file */ 1478 unlink(initlvl2); 1479 } 1480 #endif 1481 } init 1 read_inittab() L1313 daemon init 3 init 3 inittab CHILD node family init process start_if_needed() 1483 /* 1484 * Walk through the family list and start up children * The entries that do not belong here at all are removed 1486 * from the list */ family CHILD process[128] 1488 void start_if_needed(void) 1489 { 1490 CHILD *ch; /* Pointer to child */ 1491 int delete; /* Delete this entry from list? */ INITDBG(L_VB, "Checking for children to start"); read_inittab() /etc/inittab family node for(ch = family; ch; ch = ch->next) { #if DEBUG 1498 if (ch->rlevel[0] == 'C') { 1499 INITDBG(L_VB, "%s: flags %d", ch->process, ch->flags);

53 1500 } 1501 #endif /* Are we waiting for this process? Then quit here. */ 1504 if (ch->flags & WAITING) break; WAITING init process 1505 process 1506 /* Already running? OK, don't touch it */ 1507 if (ch->flags & RUNNING) continue; node process running /* See if we have to start it up */ 1510 delete = 1; 1511 if (strchr(ch->rlevel, runlevel) runlevel DEMAND( ) #*Ss sysinit boot action ( #*Ss run level ) 1512 ((ch->flags & DEMAND) &&!strchr("#*ss", runlevel))) { 1513 startup(ch); 1514 delete = 0; node clear 1515 } if (delete) { node level 1518 /* FIXME: is this OK? */ 1519 ch->flags &= ~(RUNNING WAITING); 1520 if (!ISPOWER(ch->action) && ch->action!= KBREQUEST) 1521 ch->flags &= ~XECUTED; 1522 ch->pid = 0; 1523 } else 1524 /* Do we have to wait for this process? */ 1525 if (ch->flags & WAITING) break; 1526 } 1527 /* Done. */ 1528 }

54 1063 /* 1064 * Start a child running! 1065 */ CHILD l2:2:wait:/etc/rc.d/rc 2 /etc/rc.d/rc 2 /etc/rc.d/rc void startup(child *ch) 1067 { 1068 /* 1069 * See if it's disabled 1070 */ 1071 if (ch->flags & FAILING) return; switch(ch->action) { case SYSINIT: 1076 case BOOTWAIT: 1077 case WAIT: 1078 case POWERWAIT: 1079 case POWERFAILNOW: 1080 case POWEROKWAIT: 1081 case CTRLALTDEL: 1082 if (!(ch->flags & XECUTED)) ch->flags = WAITING; action XECUTED WAITING spawn() WAITING 1083 case KBREQUEST:

55 1084 case BOOT: 1085 case POWERFAIL: 1086 case ONCE: 1087 if (ch->flags & XECUTED) break; XECUTED 1088 case ONDEMAND: 1089 case RESPAWN: 1090 ch->flags = RUNNING; 1091 if (spawn(ch, &(ch->pid)) < 0) break; ch->pid pid spawn() 1092 /* 1093 * Do NOT log if process field starts with '+' 1094 * FIXME: that's for compatibility with *very* 1095 * old getties - probably it can be taken out */ 1097 if (ch->process[0]!= '+') 1098 write_utmp_wtmp("", ch->id, ch->pid, 1099 INIT_PROCESS, ""); 1100 break; 1101 } 1102 } spawn launch CHILD process[128] 823 /* 824 * Fork and execute. 825 * 826 * This function is too long and indents too deep. 827 * 828 */ ch *res pid /etc/inittab si::sysinit:/etc/rc.d/rc.sysinit CHILD *ch ch->id = si

ebook15-10

ebook15-10 1 0 10.1 U N I X V 7 4. 3 B S D S V R 3 P O S I X. 1 100 % 10.2 S I G S I G A B RT a b o r t S I G A L R M a l a r m V 7 1 5 S V R 4 4. 3 + B S D 31 < s i g n a l. h > 0 10. 9 k i l l 0 P O S I X. 1 D

More information

Windows XP

Windows XP Windows XP What is Windows XP Windows is an Operating System An Operating System is the program that controls the hardware of your computer, and gives you an interface that allows you and other programs

More information

<4D6963726F736F667420576F7264202D2032303130C4EAC0EDB9A4C0E04142BCB6D4C4B6C1C5D0B6CFC0FDCCE2BEABD1A15F325F2E646F63>

<4D6963726F736F667420576F7264202D2032303130C4EAC0EDB9A4C0E04142BCB6D4C4B6C1C5D0B6CFC0FDCCE2BEABD1A15F325F2E646F63> 2010 年 理 工 类 AB 级 阅 读 判 断 例 题 精 选 (2) Computer mouse How does the mouse work? We have to start at the bottom, so think upside down for now. It all starts with mouse ball. As the mouse ball in the bottom

More information

穨control.PDF

穨control.PDF TCP congestion control yhmiu Outline Congestion control algorithms Purpose of RFC2581 Purpose of RFC2582 TCP SS-DR 1998 TCP Extensions RFC1072 1988 SACK RFC2018 1996 FACK 1996 Rate-Halving 1997 OldTahoe

More information

Microsoft Word - template.doc

Microsoft Word - template.doc HGC efax Service User Guide I. Getting Started Page 1 II. Fax Forward Page 2 4 III. Web Viewing Page 5 7 IV. General Management Page 8 12 V. Help Desk Page 13 VI. Logout Page 13 Page 0 I. Getting Started

More information

1.ai

1.ai HDMI camera ARTRAY CO,. LTD Introduction Thank you for purchasing the ARTCAM HDMI camera series. This manual shows the direction how to use the viewer software. Please refer other instructions or contact

More information

Lorem ipsum dolor sit amet, consectetuer adipiscing elit

Lorem ipsum dolor sit amet, consectetuer adipiscing elit English for Study in Australia 留 学 澳 洲 英 语 讲 座 Lesson 3: Make yourself at home 第 三 课 : 宾 至 如 归 L1 Male: 各 位 朋 友 好, 欢 迎 您 收 听 留 学 澳 洲 英 语 讲 座 节 目, 我 是 澳 大 利 亚 澳 洲 广 播 电 台 的 节 目 主 持 人 陈 昊 L1 Female: 各 位

More information

Process init init /etc/inittab id:initdefault: runlevel runlevel /etc/rc.sysinit /etc/fstab mount filesystems runlevel /etc/r.d/rc$runlevel.d/ script

Process init init /etc/inittab id:initdefault: runlevel runlevel /etc/rc.sysinit /etc/fstab mount filesystems runlevel /etc/r.d/rc$runlevel.d/ script Linux 2-1 1-2 CPU and Memory 1-3 1-4 RAID Software RAID Lab Installing RedHat Linux and Implementing Software RAID Linux F4 ( Files 4 ) lilo.conf grub.conf inittab fstab service chkconfig 2-1 Linux 2-1

More information

Microsoft PowerPoint - AWOL - Acrobat Windows Outlook.ppt [Compatibility Mode]

Microsoft PowerPoint - AWOL - Acrobat Windows Outlook.ppt [Compatibility Mode] AWOL Windows - Tips & Tricks Resolution, color depth & refresh rate Background color Service packs Disk cleanup (cleanmgr) Disk defragmentation AWOL Windows Resolution, Color Depth & Refresh Rate The main

More information

Guide to Install SATA Hard Disks

Guide to Install SATA Hard Disks SATA RAID 1. SATA. 2 1.1 SATA. 2 1.2 SATA 2 2. RAID (RAID 0 / RAID 1 / JBOD).. 4 2.1 RAID. 4 2.2 RAID 5 2.3 RAID 0 6 2.4 RAID 1.. 10 2.5 JBOD.. 16 3. Windows 2000 / Windows XP 20 1. SATA 1.1 SATA Serial

More information

PowerPoint Presentation

PowerPoint Presentation TOEFL Practice Online User Guide Revised September 2009 In This Guide General Tips for Using TOEFL Practice Online Directions for New Users Directions for Returning Users 2 General Tips To use TOEFL Practice

More information

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc References (Section 5.2) Hsuan-Tien Lin Deptartment of CSIE, NTU OOP Class, March 15-16, 2010 H.-T. Lin (NTU CSIE) References OOP 03/15-16/2010 0 / 22 Fun Time (1) What happens in memory? 1 i n t i ; 2

More information

Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provided by SUNPLUS TECHNOLO

Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provided by SUNPLUS TECHNOLO Car DVD New GUI IR Flow User Manual V0.1 Jan 25, 2008 19, Innovation First Road Science Park Hsin-Chu Taiwan 300 R.O.C. Tel: 886-3-578-6005 Fax: 886-3-578-4418 Web: www.sunplus.com Important Notice SUNPLUS

More information

可 愛 的 動 物 小 五 雷 雅 理 第 一 次 小 六 甲 黃 駿 朗 今 年 暑 假 發 生 了 一 件 令 人 非 常 難 忘 的 事 情, 我 第 一 次 參 加 宿 營, 離 開 父 母, 自 己 照 顧 自 己, 出 發 前, 我 的 心 情 十 分 緊 張 當 到 達 目 的 地 後

可 愛 的 動 物 小 五 雷 雅 理 第 一 次 小 六 甲 黃 駿 朗 今 年 暑 假 發 生 了 一 件 令 人 非 常 難 忘 的 事 情, 我 第 一 次 參 加 宿 營, 離 開 父 母, 自 己 照 顧 自 己, 出 發 前, 我 的 心 情 十 分 緊 張 當 到 達 目 的 地 後 郭家朗 許鈞嵐 劉振迪 樊偉賢 林洛鋒 第 36 期 出版日期 28-3-2014 出版日期 28-3-2014 可 愛 的 動 物 小 五 雷 雅 理 第 一 次 小 六 甲 黃 駿 朗 今 年 暑 假 發 生 了 一 件 令 人 非 常 難 忘 的 事 情, 我 第 一 次 參 加 宿 營, 離 開 父 母, 自 己 照 顧 自 己, 出 發 前, 我 的 心 情 十 分 緊 張 當 到 達 目

More information

C o n t e n t s...7... 15 1. Acceptance... 17 2. Allow Love... 19 3. Apologize... 21 4. Archangel Metatron... 23 5. Archangel Michael... 25 6. Ask for

C o n t e n t s...7... 15 1. Acceptance... 17 2. Allow Love... 19 3. Apologize... 21 4. Archangel Metatron... 23 5. Archangel Michael... 25 6. Ask for Doreen Virtue, Ph.D. Charles Virtue C o n t e n t s...7... 15 1. Acceptance... 17 2. Allow Love... 19 3. Apologize... 21 4. Archangel Metatron... 23 5. Archangel Michael... 25 6. Ask for a Sign... 27 7.

More information

TX-NR3030_BAS_Cs_ indd

TX-NR3030_BAS_Cs_ indd TX-NR3030 http://www.onkyo.com/manual/txnr3030/adv/cs.html Cs 1 2 3 Speaker Cable 2 HDMI OUT HDMI IN HDMI OUT HDMI OUT HDMI OUT HDMI OUT 1 DIGITAL OPTICAL OUT AUDIO OUT TV 3 1 5 4 6 1 2 3 3 2 2 4 3 2 5

More information

Microsoft Word - 11月電子報1130.doc

Microsoft Word - 11月電子報1130.doc 發 行 人 : 楊 進 成 出 刊 日 期 2008 年 12 月 1 日, 第 38 期 第 1 頁 / 共 16 頁 封 面 圖 話 來 來 來, 來 葳 格 ; 玩 玩 玩, 玩 數 學 在 11 月 17 到 21 日 這 5 天 裡 每 天 一 個 題 目, 孩 子 們 依 據 不 同 年 段, 尋 找 屬 於 自 己 的 解 答, 這 些 數 學 題 目 和 校 園 情 境 緊 緊 結

More information

SA-DK2-U3Rユーザーズマニュアル

SA-DK2-U3Rユーザーズマニュアル USB3.0 SA-DK2-U3R 2007.0 2 3 4 5 6 7 8 System Info. Manual Rebuild Delete RAID RAID Alarm Rebuild Rate Auto compare Temp Management Load Default Elapse time Event Log 0 2 3 4 2 3 4 ESC 5

More information

untitled

untitled Co-integration and VECM Yi-Nung Yang CYCU, Taiwan May, 2012 不 列 1 Learning objectives Integrated variables Co-integration Vector Error correction model (VECM) Engle-Granger 2-step co-integration test Johansen

More information

K7VT2_QIG_v3

K7VT2_QIG_v3 ............ 1 2 3 4 5 [R] : Enter Raid setup utility 6 Press[A]keytocreateRAID RAID Type: JBOD RAID 0 RAID 1: 2 7 RAID 0 Auto Create Manual Create: 2 RAID 0 Block Size: 16K 32K

More information

How to Debug Tuxedo Server printf( Input data is: %s, inputstr); fprintf(stdout, Input data is %s, inputstr); fprintf(stderr, Input data is %s, inputstr); printf( Return data is: %s, outputstr); tpreturn(tpsuccess,

More information

IP505SM_manual_cn.doc

IP505SM_manual_cn.doc IP505SM 1 Introduction 1...4...4...4...5 LAN...5...5...6...6...7 LED...7...7 2...9...9...9 3...11...11...12...12...12...14...18 LAN...19 DHCP...20...21 4 PC...22...22 Windows...22 TCP/IP -...22 TCP/IP

More information

BC04 Module_antenna__ doc

BC04 Module_antenna__ doc http://www.infobluetooth.com TEL:+86-23-68798999 Fax: +86-23-68889515 Page 1 of 10 http://www.infobluetooth.com TEL:+86-23-68798999 Fax: +86-23-68889515 Page 2 of 10 http://www.infobluetooth.com TEL:+86-23-68798999

More information

Logitech Wireless Combo MK45 English

Logitech Wireless Combo MK45 English Logitech Wireless Combo MK45 Setup Guide Logitech Wireless Combo MK45 English................................................................................... 7..........................................

More information

蔡 氏 族 譜 序 2

蔡 氏 族 譜 序 2 1 蔡 氏 族 譜 Highlights with characters are Uncle Mike s corrections. Missing or corrected characters are found on pages 9, 19, 28, 34, 44. 蔡 氏 族 譜 序 2 3 福 建 仙 遊 赤 湖 蔡 氏 宗 譜 序 蔡 氏 之 先 出 自 姬 姓 周 文 王 第 五 子

More information

Some experiences in working with Madagascar: installa7on & development Tengfei Wang, Peng Zou Tongji university

Some experiences in working with Madagascar: installa7on & development Tengfei Wang, Peng Zou Tongji university Some experiences in working with Madagascar: installa7on & development Tengfei Wang, Peng Zou Tongji university Map data @ Google Reproducible research in Madagascar How to conduct a successful installation

More information

软件测试(TA07)第一学期考试

软件测试(TA07)第一学期考试 一 判 断 题 ( 每 题 1 分, 正 确 的, 错 误 的,20 道 ) 1. 软 件 测 试 按 照 测 试 过 程 分 类 为 黑 盒 白 盒 测 试 ( ) 2. 在 设 计 测 试 用 例 时, 应 包 括 合 理 的 输 入 条 件 和 不 合 理 的 输 入 条 件 ( ) 3. 集 成 测 试 计 划 在 需 求 分 析 阶 段 末 提 交 ( ) 4. 单 元 测 试 属 于 动

More information

Microsoft Word - 第四組心得.doc

Microsoft Word - 第四組心得.doc 徐 婉 真 這 四 天 的 綠 島 人 權 體 驗 營 令 我 印 象 深 刻, 尤 其 第 三 天 晚 上 吳 豪 人 教 授 的 那 堂 課, 他 讓 我 聽 到 不 同 於 以 往 的 正 義 之 聲 轉 型 正 義, 透 過 他 幽 默 熱 情 的 語 調 激 起 了 我 對 政 治 的 興 趣, 願 意 在 未 來 多 關 心 社 會 多 了 解 政 治 第 一 天 抵 達 綠 島 不 久,

More information

VASP应用运行优化

VASP应用运行优化 1 VASP wszhang@ustc.edu.cn April 8, 2018 Contents 1 2 2 2 3 2 4 2 4.1........................................................ 2 4.2..................................................... 3 5 4 5.1..........................................................

More information

Microsoft Word - ChineseSATII .doc

Microsoft Word - ChineseSATII .doc 中 文 SAT II 冯 瑶 一 什 么 是 SAT II 中 文 (SAT Subject Test in Chinese with Listening)? SAT Subject Test 是 美 国 大 学 理 事 会 (College Board) 为 美 国 高 中 生 举 办 的 全 国 性 专 科 标 准 测 试 考 生 的 成 绩 是 美 国 大 学 录 取 新 生 的 重 要 依

More information

Lorem ipsum dolor sit amet, consectetuer adipiscing elit

Lorem ipsum dolor sit amet, consectetuer adipiscing elit 留 学 澳 洲 英 语 讲 座 English for Study in Australia 第 十 三 课 : 与 同 学 一 起 做 功 课 Lesson 13: Working together L1 Male 各 位 听 众 朋 友 好, 我 是 澳 大 利 亚 澳 洲 广 播 电 台 的 节 目 主 持 人 陈 昊 L1 Female 各 位 好, 我 是 马 健 媛 L1 Male L1

More information

< F5FB77CB6BCBD672028B0B6A46AABE4B751A874A643295F5FB8D5C5AA28A668ADB6292E706466>

< F5FB77CB6BCBD672028B0B6A46AABE4B751A874A643295F5FB8D5C5AA28A668ADB6292E706466> A A A A A i A A A A A A A ii Introduction to the Chinese Editions of Great Ideas Penguin s Great Ideas series began publication in 2004. A somewhat smaller list is published in the USA and a related, even

More information

ch_code_infoaccess

ch_code_infoaccess 地 產 代 理 監 管 局 公 開 資 料 守 則 2014 年 5 月 目 錄 引 言 第 1 部 段 數 適 用 範 圍 1.1-1.2 監 管 局 部 門 1.1 紀 律 研 訊 1.2 提 供 資 料 1.3-1.6 按 慣 例 公 布 或 供 查 閱 的 資 料 1.3-1.4 應 要 求 提 供 的 資 料 1.5 法 定 義 務 及 限 制 1.6 程 序 1.7-1.19 公 開 資

More information

國立中山大學學位論文典藏

國立中山大學學位論文典藏 I II III IV The theories of leadership seldom explain the difference of male leaders and female leaders. Instead of the assumption that the leaders leading traits and leading styles of two sexes are the

More information

1505.indd

1505.indd 上 海 市 孙 中 山 宋 庆 龄 文 物 管 理 委 员 会 上 海 宋 庆 龄 研 究 会 主 办 2015.05 总 第 148 期 图 片 新 闻 2015 年 9 月 22 日, 由 上 海 孙 中 山 故 居 纪 念 馆 台 湾 辅 仁 大 学 和 台 湾 图 书 馆 联 合 举 办 的 世 纪 姻 缘 纪 念 孙 中 山 先 生 逝 世 九 十 周 年 及 其 革 命 历 程 特 展

More information

Your Field Guide to More Effective Global Video Conferencing As a global expert in video conferencing, and a geographically dispersed company that uses video conferencing in virtually every aspect of its

More information

Microsoft Word - Final Exam Review Packet.docx

Microsoft Word - Final Exam Review Packet.docx Do you know these words?... 3.1 3.5 Can you do the following?... Ask for and say the date. Use the adverbial of time correctly. Use Use to ask a tag question. Form a yes/no question with the verb / not

More information

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1 21 , 7, Windows,,,, : 010-62782989 13501256678 13801310933,,,, ;,, ( CIP) /,,. : ;, 2005. 11 ( 21 ) ISBN 7-81082 - 634-4... - : -. TP316-44 CIP ( 2005) 123583 : : : : 100084 : 010-62776969 : 100044 : 010-51686414

More information

4. 每 组 学 生 将 写 有 习 语 和 含 义 的 两 组 卡 片 分 别 洗 牌, 将 顺 序 打 乱, 然 后 将 两 组 卡 片 反 面 朝 上 置 于 课 桌 上 5. 学 生 依 次 从 两 组 卡 片 中 各 抽 取 一 张, 展 示 给 小 组 成 员, 并 大 声 朗 读 卡

4. 每 组 学 生 将 写 有 习 语 和 含 义 的 两 组 卡 片 分 别 洗 牌, 将 顺 序 打 乱, 然 后 将 两 组 卡 片 反 面 朝 上 置 于 课 桌 上 5. 学 生 依 次 从 两 组 卡 片 中 各 抽 取 一 张, 展 示 给 小 组 成 员, 并 大 声 朗 读 卡 Tips of the Week 课 堂 上 的 英 语 习 语 教 学 ( 二 ) 2015-04-19 吴 倩 MarriottCHEI 大 家 好! 欢 迎 来 到 Tips of the Week! 这 周 我 想 和 老 师 们 分 享 另 外 两 个 课 堂 上 可 以 开 展 的 英 语 习 语 教 学 活 动 其 中 一 个 活 动 是 一 个 充 满 趣 味 的 游 戏, 另 外

More information

Preface This guide is intended to standardize the use of the WeChat brand and ensure the brand's integrity and consistency. The guide applies to all d

Preface This guide is intended to standardize the use of the WeChat brand and ensure the brand's integrity and consistency. The guide applies to all d WeChat Search Visual Identity Guidelines WEDESIGN 2018. 04 Preface This guide is intended to standardize the use of the WeChat brand and ensure the brand's integrity and consistency. The guide applies

More information

Chapter 2

Chapter 2 2 (Setup) ETAP PowerStation ETAP ETAP PowerStation PowerStation PowerPlot ODBC SQL Server Oracle SQL Server Oracle Windows SQL Server Oracle PowerStation PowerStation PowerStation PowerStation ETAP PowerStation

More information

2015年4月11日雅思阅读预测机经(新东方版)

2015年4月11日雅思阅读预测机经(新东方版) 剑 桥 雅 思 10 第 一 时 间 解 析 阅 读 部 分 1 剑 桥 雅 思 10 整 体 内 容 统 计 2 剑 桥 雅 思 10 话 题 类 型 从 以 上 统 计 可 以 看 出, 雅 思 阅 读 的 考 试 话 题 一 直 广 泛 多 样 而 题 型 则 稳 中 有 变 以 剑 桥 10 的 test 4 为 例 出 现 的 三 篇 文 章 分 别 是 自 然 类, 心 理 研 究 类,

More information

99 學年度班群總介紹 第 370 期 班群總導 陳怡靜 G45 班群總導 陳怡靜(河馬) A 家 惠如 家浩 T 格 宜蓁 小 霖 怡 家 M 璇 均 蓁 雴 家 數學領域 珈玲 國燈 370-2 英領域 Kent

99 學年度班群總介紹 第 370 期 班群總導 陳怡靜 G45 班群總導 陳怡靜(河馬) A 家 惠如 家浩 T 格 宜蓁 小 霖 怡 家 M 璇 均 蓁 雴 家 數學領域 珈玲 國燈 370-2 英領域 Kent 2010 年 8 月 27 日 出 刊 精 緻 教 育 宜 蘭 縣 公 辦 民 營 人 國 民 中 小 學 財 團 法 人 人 適 性 教 育 基 金 會 承 辦 地 址 : 宜 蘭 縣 26141 頭 城 鎮 雅 路 150 號 (03)977-3396 http://www.jwps.ilc.edu.tw 健 康 VS. 學 習 各 位 合 夥 人 其 實 都 知 道, 我 是 個 胖 子, 而

More information

[ 13 年 12 月 06 日, 下 午 6 点 24 分 ] Intel Hosts 新 加 入 的 同 学 们, 快 去 听 听 在 线 宣 讲 会 哦, 同 时 完 成 页 面 下 方 有 奖 调 查, 就 有 资 格 参 与 大 奖 抽 取 啦! [ 13 年 12 月 06 日, 下 午

[ 13 年 12 月 06 日, 下 午 6 点 24 分 ] Intel Hosts 新 加 入 的 同 学 们, 快 去 听 听 在 线 宣 讲 会 哦, 同 时 完 成 页 面 下 方 有 奖 调 查, 就 有 资 格 参 与 大 奖 抽 取 啦! [ 13 年 12 月 06 日, 下 午 China Career Fair: To Know a Different Intel Time Participants Chat Transcript [ 13 年 12 月 06 日, 下 午 6 点 00 分 ] Participant Hi [ 13 年 12 月 06 日, 下 午 6 点 00 分 ] Intel Hosts 大 家 好! [ 13 年 12 月 06 日, 下 午

More information

AL-M200 Series

AL-M200 Series NPD4754-00 TC ( ) Windows 7 1. [Start ( )] [Control Panel ()] [Network and Internet ( )] 2. [Network and Sharing Center ( )] 3. [Change adapter settings ( )] 4. 3 Windows XP 1. [Start ( )] [Control Panel

More information

els0xu_zh_nf_v8.book Page Wednesday, June, 009 9:5 AM ELS-0/0C.8

els0xu_zh_nf_v8.book Page Wednesday, June, 009 9:5 AM ELS-0/0C.8 els0xu_zh_nf_v8.book Page Wednesday, June, 009 9:5 AM ELS-0/0C.8 Yamaha ELS-0/0C..8 LCD ELS-0/0C v. typeu LCD ELS-0/0C typeu / -6 / [SEARCH] / - ZH ELS-0/0C.8 els0xu_zh_nf_v8.book Page Wednesday, June,

More information

A Preliminary Implementation of Linux Kernel Virus and Process Hiding

A Preliminary Implementation of Linux Kernel Virus and Process Hiding 邵 俊 儒 翁 健 吉 妍 年 月 日 学 号 学 号 学 号 摘 要 结 合 课 堂 知 识 我 们 设 计 了 一 个 内 核 病 毒 该 病 毒 同 时 具 有 木 马 的 自 动 性 的 隐 蔽 性 和 蠕 虫 的 感 染 能 力 该 病 毒 获 得 权 限 后 会 自 动 将 自 身 加 入 内 核 模 块 中 劫 持 的 系 统 调 用 并 通 过 简 单 的 方 法 实 现 自 身 的

More information

2-7.FIT)

2-7.FIT) 文 化 园 地 8 2009 年 8 月 18 日 星 期 二 E-mail:liuliyuan@qunlitimes.com 群 立 文 化 感 受 今 天 你 开 心 了 吗? 周 传 喜 群 雄 争 立 竞 争 意 识 ; 傲 立 群 雄 奋 斗 目 标, 这 几 句 话 一 直 是 群 立 的 文 化 和 方 针, 也 同 样 是 我 很 喜 欢 的 座 右 铭 我 想 这 几 句 话 生

More information

mvc

mvc Build an application Tutor : Michael Pan Application Source codes - - Frameworks Xib files - - Resources - ( ) info.plist - UIKit Framework UIApplication Event status bar, icon... delegation [UIApplication

More information

2017 CCAFL Chinese in Context

2017 CCAFL Chinese in Context Student/Registration Number Centre Number 2017 PUBLIC EXAMINATION Chinese in Context Reading Time: 10 minutes Working Time: 2 hours and 30 minutes You have 10 minutes to read all the papers and to familiarise

More information

hks298cover&back

hks298cover&back 2957 6364 2377 3300 2302 1087 www.scout.org.hk scoutcraft@scout.org.hk 2675 0011 5,500 Service and Scouting Recently, I had an opportunity to learn more about current state of service in Hong Kong

More information

epub83-1

epub83-1 C++Builder 1 C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r 1.1 1.1.1 1-1 1. 1-1 1 2. 1-1 2 A c c e s s P a r a d o x Visual FoxPro 3. / C / S 2 C + + B u i l d e r / C

More information

國 立 政 治 大 學 教 育 學 系 2016 新 生 入 學 手 冊 目 錄 表 11 國 立 政 治 大 學 教 育 學 系 博 士 班 資 格 考 試 抵 免 申 請 表... 46 論 文 題 目 申 報 暨 指 導 教 授... 47 表 12 國 立 政 治 大 學 碩 博 士 班 論

國 立 政 治 大 學 教 育 學 系 2016 新 生 入 學 手 冊 目 錄 表 11 國 立 政 治 大 學 教 育 學 系 博 士 班 資 格 考 試 抵 免 申 請 表... 46 論 文 題 目 申 報 暨 指 導 教 授... 47 表 12 國 立 政 治 大 學 碩 博 士 班 論 國 立 政 治 大 學 教 育 學 系 2016 新 生 入 學 手 冊 目 錄 一 教 育 學 系 簡 介... 1 ( 一 ) 成 立 時 間... 1 ( 二 ) 教 育 目 標 與 發 展 方 向... 1 ( 三 ) 授 課 師 資... 2 ( 四 ) 行 政 人 員... 3 ( 五 ) 核 心 能 力 與 課 程 規 劃... 3 ( 六 ) 空 間 環 境... 12 ( 七 )

More information

HCD0174_2008

HCD0174_2008 Reliability Laboratory Page: 1 of 5 Date: December 23, 2008 WINMATE COMMUNICATION INC. 9 F, NO. 111-6, SHING-DE RD., SAN-CHUNG CITY, TAIPEI, TAIWAN, R.O.C. The following merchandise was submitted and identified

More information

提纲 1 2 OS Examples for 3

提纲 1 2 OS Examples for 3 第 4 章 Threads2( 线程 2) 中国科学技术大学计算机学院 October 28, 2009 提纲 1 2 OS Examples for 3 Outline 1 2 OS Examples for 3 Windows XP Threads I An Windows XP application runs as a seperate process, and each process may

More information

Bus Hound 5

Bus Hound 5 Bus Hound 5.0 ( 1.0) 21IC 2007 7 BusHound perisoft PC hound Bus Hound 6.0 5.0 5.0 Bus Hound, IDE SCSI USB 1394 DVD Windows9X,WindowsMe,NT4.0,2000,2003,XP XP IRP Html ZIP SCSI sense USB Bus Hound 1 Bus

More information

2 2 3 DLight CPU I/O DLight Oracle Solaris (DTrace) C/C++ Solaris DLight DTrace DLight DLight DLight C C++ Fortran CPU I/O DLight AM

2 2 3 DLight CPU I/O DLight Oracle Solaris (DTrace) C/C++ Solaris DLight DTrace DLight DLight DLight C C++ Fortran CPU I/O DLight AM Oracle Solaris Studio 12.2 DLight 2010 9 2 2 3 DLight 3 3 6 13 CPU 16 18 21 I/O DLight Oracle Solaris (DTrace) C/C++ Solaris DLight DTrace DLight DLight DLight C C++ Fortran CPU I/O DLight AMP Apache MySQL

More information

從詩歌的鑒賞談生命價值的建構

從詩歌的鑒賞談生命價值的建構 Viktor E. Frankl (logotherapy) (will-to-meaning) (creative values) Ture (Good) (Beauty) (experiential values) (attitudinal values) 1 2 (logotherapy) (biological) (2) (psychological) (3) (noölogical) (4)

More information

徐汇教育214/3月刊 重 点 关 注 高中生异性交往的小团体辅导 及效果研究 颜静红 摘 要 采用人际关系综合诊断量表 郑日昌编制并 与同性交往所不能带来的好处 带来稳定感和安全感 能 修订 对我校高一学生进行问卷测量 实验组前后测 在 够度过更快乐的时光 获得与别人友好相处的经验 宽容 量表总分和第 4 项因子分 异性交往困扰 上均有显著差 大度和理解力得到发展 得到掌握社会技术的机会 得到 异

More information

高中英文科教師甄試心得

高中英文科教師甄試心得 高 中 英 文 科 教 師 甄 試 心 得 英 語 學 系 碩 士 班 林 俊 呈 高 雄 市 立 高 雄 高 級 中 學 今 年 第 一 次 參 加 教 師 甄 試, 能 夠 在 尚 未 服 兵 役 前 便 考 上 高 雄 市 立 高 雄 高 級 中 學 專 任 教 師, 自 己 覺 得 很 意 外, 也 很 幸 運 考 上 後 不 久 在 與 雄 中 校 長 的 會 談 中, 校 長 的 一 句

More information

Microsoft Word doc

Microsoft Word doc 中 考 英 语 科 考 试 标 准 及 试 卷 结 构 技 术 指 标 构 想 1 王 后 雄 童 祥 林 ( 华 中 师 范 大 学 考 试 研 究 院, 武 汉,430079, 湖 北 ) 提 要 : 本 文 从 结 构 模 式 内 容 要 素 能 力 要 素 题 型 要 素 难 度 要 素 分 数 要 素 时 限 要 素 等 方 面 细 致 分 析 了 中 考 英 语 科 试 卷 结 构 的

More information

AN INTRODUCTION TO PHYSICAL COMPUTING USING ARDUINO, GRASSHOPPER, AND FIREFLY (CHINESE EDITION ) INTERACTIVE PROTOTYPING

AN INTRODUCTION TO PHYSICAL COMPUTING USING ARDUINO, GRASSHOPPER, AND FIREFLY (CHINESE EDITION ) INTERACTIVE PROTOTYPING AN INTRODUCTION TO PHYSICAL COMPUTING USING ARDUINO, GRASSHOPPER, AND FIREFLY (CHINESE EDITION ) INTERACTIVE PROTOTYPING 前言 - Andrew Payne 目录 1 2 Firefly Basics 3 COMPONENT TOOLBOX 目录 4 RESOURCES 致谢

More information

Love Actually 真 的 戀 愛 了!? 焦 點 主 題 2035 年 一 個 寒 冷 卻 又 放 晴 的 下 午, 爸 媽 一 大 清 早 已 上 班, 只 得 小 奈 獨 個 兒 待 在 家 中, 奢 侈 地 享 受 著 她 的 春 節 假 期 剛 度 過 了 期 考 的 艱 苦 歲

Love Actually 真 的 戀 愛 了!? 焦 點 主 題 2035 年 一 個 寒 冷 卻 又 放 晴 的 下 午, 爸 媽 一 大 清 早 已 上 班, 只 得 小 奈 獨 個 兒 待 在 家 中, 奢 侈 地 享 受 著 她 的 春 節 假 期 剛 度 過 了 期 考 的 艱 苦 歲 愛 情, 每 一 個 人 都 十 分 渴 望 有 的, 不 論 成 年 人 還 是 中 學 生 但 是, 你 知 道 甚 麼 是 愛 情 嗎? 如 何 才 可 以 擁 有 真 正 的 愛 情? 池 田 先 生 對 愛 情 方 面 有 些 甚 麼 指 導 呢? 01 焦 點 主 題 Love Actually... 真 的 戀 愛 了!? 09 Love Song 11 女 未 來 部 長 專 訪 15

More information

Male Circumcision - Traditional Chinese

Male Circumcision - Traditional Chinese Male Circumcision Male circumcision is the removal of the foreskin around the end of the penis. If you decide on circumcision, your baby s doctor will do it in the hospital s nursery. If your baby is small

More information

Chn 116 Neh.d.01.nis

Chn 116 Neh.d.01.nis 31 尼 希 米 书 尼 希 米 的 祷 告 以 下 是 哈 迦 利 亚 的 儿 子 尼 希 米 所 1 说 的 话 亚 达 薛 西 王 朝 二 十 年 基 斯 流 月 *, 我 住 在 京 城 书 珊 城 里 2 我 的 兄 弟 哈 拿 尼 和 其 他 一 些 人 从 犹 大 来 到 书 珊 城 我 向 他 们 打 听 那 些 劫 后 幸 存 的 犹 太 人 家 族 和 耶 路 撒 冷 的 情 形

More information

ebook140-8

ebook140-8 8 Microsoft VPN Windows NT 4 V P N Windows 98 Client 7 Vintage Air V P N 7 Wi n d o w s NT V P N 7 VPN ( ) 7 Novell NetWare VPN 8.1 PPTP NT4 VPN Q 154091 M i c r o s o f t Windows NT RAS [ ] Windows NT4

More information

星河33期.FIT)

星河33期.FIT) 大 事 记 渊 2011.11 要 要 2011.12 冤 1 尧 11 月 25 日 下 午 袁 白 银 区 首 届 中 小 学 校 长 论 坛 在 我 校 举 行 遥 2 尧 在 甘 肃 省 2011 年 野 十 一 五 冶 规 划 课 题 集 中 鉴 定 中 袁 我 校 教 师 郝 香 梅 负 责 的 课 题 叶 英 语 课 堂 的 艺 术 性 研 究 曳 袁 张 宏 林 负 责 的 叶 白

More information

UTI (Urinary Tract Infection) - Traditional Chinese

UTI (Urinary Tract Infection) - Traditional Chinese UTI (Urinary Tract Infection) Urinary tract infection, also called UTI, is an infection of the bladder or kidneys. Urethra Kidney Ureters Bladder Vagina Kidney Ureters Bladder Urethra Penis Causes UTI

More information

2015 Chinese FL Written examination

2015 Chinese FL Written examination Victorian Certificate of Education 2015 SUPERVISOR TO ATTACH PROCESSING LABEL HERE Letter STUDENT NUMBER CHINESE FIRST LANGUAGE Written examination Monday 16 November 2015 Reading time: 11.45 am to 12.00

More information

K301Q-D VRT中英文说明书141009

K301Q-D VRT中英文说明书141009 THE INSTALLING INSTRUCTION FOR CONCEALED TANK Important instuction:.. Please confirm the structure and shape before installing the toilet bowl. Meanwhile measure the exact size H between outfall and infall

More information

LSC操作说明

LSC操作说明 1 C H R I S T A L P H A 1-4 LSC 型 Part. No. 102041 A L P H A 2-4 LSC 型 Part. No. 10204 冷 冻 干 燥 机 操 作 说 明 新 研 制 的 LSC-8 控 制 器, 具 备 图 形 显 示 功 能, 能 以 数 据 表 形 式 显 示 参 数, 并 可 选 配 控 制 软 件 LSC-8 1/4 VGA 大 屏 幕

More information

Male Circumcision - Simplified Chinese

Male Circumcision - Simplified Chinese Male Circumcision Male circumcision is the removal of the foreskin around the end of the penis. If you decide on circumcision, your baby s doctor will do it in the hospital s nursery. If your baby is small

More information

IP Access Lists IP Access Lists IP Access Lists

IP Access Lists IP Access Lists IP Access Lists Chapter 10 Access Lists IP Access Lists IP Access Lists IP Access Lists Security) IP Access Lists Access Lists (Network router For example, RouterA can use an access list to deny access from Network 4

More information

硕 士 学 位 论 文 论 文 题 目 : 北 岛 诗 歌 创 作 的 双 重 困 境 专 业 名 称 : 中 国 现 当 代 文 学 研 究 方 向 : 中 国 新 诗 研 究 论 文 作 者 : 奚 荣 荣 指 导 老 师 : 姜 玉 琴 2014 年 12 月

硕 士 学 位 论 文 论 文 题 目 : 北 岛 诗 歌 创 作 的 双 重 困 境 专 业 名 称 : 中 国 现 当 代 文 学 研 究 方 向 : 中 国 新 诗 研 究 论 文 作 者 : 奚 荣 荣 指 导 老 师 : 姜 玉 琴 2014 年 12 月 硕 士 学 位 论 文 论 文 题 目 : 北 岛 诗 歌 创 作 的 双 重 困 境 专 业 名 称 : 中 国 现 当 代 文 学 研 究 方 向 : 中 国 新 诗 研 究 论 文 作 者 : 奚 荣 荣 指 导 老 师 : 姜 玉 琴 2014 年 12 月 致 谢 文 学 是 我 们 人 类 宝 贵 的 精 神 财 富 两 年 半 的 硕 士 学 习 让 我 进 一 步 接 近 文 学,

More information

前 言 一 場 交 換 學 生 的 夢, 夢 想 不 只 是 敢 夢, 而 是 也 要 敢 去 實 踐 為 期 一 年 的 交 換 學 生 生 涯, 說 長 不 長, 說 短 不 短 再 長 的 路, 一 步 步 也 能 走 完 ; 再 短 的 路, 不 踏 出 起 步 就 無 法 到 達 這 次

前 言 一 場 交 換 學 生 的 夢, 夢 想 不 只 是 敢 夢, 而 是 也 要 敢 去 實 踐 為 期 一 年 的 交 換 學 生 生 涯, 說 長 不 長, 說 短 不 短 再 長 的 路, 一 步 步 也 能 走 完 ; 再 短 的 路, 不 踏 出 起 步 就 無 法 到 達 這 次 壹 教 育 部 獎 助 國 內 大 學 校 院 選 送 優 秀 學 生 出 國 研 修 之 留 學 生 成 果 報 告 書 奧 地 利 約 翰 克 卜 勒 大 學 (JKU) 留 學 心 得 原 就 讀 學 校 / 科 系 / 年 級 : 長 榮 大 學 / 財 務 金 融 學 系 / 四 年 級 獲 獎 生 姓 名 : 賴 欣 怡 研 修 國 家 : 奧 地 利 研 修 學 校 : 約 翰 克 普

More information

ebook15-C

ebook15-C C 1 1.1 l s ( 1 ) - i i 4. 14 - d $ l s -ldi /etc/. /etc/.. - i i 3077 drwxr-sr-x 7 bin 2048 Aug 5 20:12 /etc/./ 2 drwxr-xr-x 13 root 512 Aug 5 20:11 /etc/../ $ls -ldi /. /..... i 2 2 drwxr-xr-x 13 root

More information

2009.05

2009.05 2009 05 2009.05 2009.05 璆 2009.05 1 亿 平 方 米 6 万 套 10 名 20 亿 元 5 个 月 30 万 亿 60 万 平 方 米 Data 围 观 CCDI 公 司 内 刊 企 业 版 P08 围 观 CCDI 管 理 学 上 有 句 名 言 : 做 正 确 的 事, 比 正 确 地 做 事 更 重 要 方 向 的 对 错 于 大 局 的 意 义 而 言,

More information

參 加 第 二 次 pesta 的 我, 在 是 次 交 流 營 上 除 了, 與 兩 年 沒 有 見 面 的 朋 友 再 次 相 聚, 加 深 友 誼 外, 更 獲 得 與 上 屆 不 同 的 體 驗 和 經 歴 比 較 起 香 港 和 馬 來 西 亞 的 活 動 模 式, 確 是 有 不 同 特

參 加 第 二 次 pesta 的 我, 在 是 次 交 流 營 上 除 了, 與 兩 年 沒 有 見 面 的 朋 友 再 次 相 聚, 加 深 友 誼 外, 更 獲 得 與 上 屆 不 同 的 體 驗 和 經 歴 比 較 起 香 港 和 馬 來 西 亞 的 活 動 模 式, 確 是 有 不 同 特 WE ARE BOY S BRIGADE 參 加 第 二 次 pesta 的 我, 在 是 次 交 流 營 上 除 了, 與 兩 年 沒 有 見 面 的 朋 友 再 次 相 聚, 加 深 友 誼 外, 更 獲 得 與 上 屆 不 同 的 體 驗 和 經 歴 比 較 起 香 港 和 馬 來 西 亞 的 活 動 模 式, 確 是 有 不 同 特 別 之 處 如 控 制 時 間 及 人 流 方 面, 香

More information

Microsoft PowerPoint - Lecture7II.ppt

Microsoft PowerPoint - Lecture7II.ppt Lecture 8II SUDOKU PUZZLE SUDOKU New Play Check 軟體實作與計算實驗 1 4x4 Sudoku row column 3 2 } 4 } block 1 4 軟體實作與計算實驗 2 Sudoku Puzzle Numbers in the puzzle belong {1,2,3,4} Constraints Each column must contain

More information

<D0D0D5FED7A8CFDF2E696E6464>

<D0D0D5FED7A8CFDF2E696E6464> 3 4 5 6 7 8 9 10 11 12 13 14 16 报 导 : 资 源 处 主 任 陆 素 芬 视 是 青 少 年 喜 爱 的 一 门 艺 术 在 孩 子 们 的 成 长 过 程 中, 许 多 优 秀 的 影 影 片 通 过 直 观 的 艺 术 手 段, 感 染 和 鼓 舞 着 青 少 年 选 择 人 生 的 走 向, 获 得 各 种 知 识, 不 断 提 高 综 合 素 质 因 此,

More information

Microsoft Word - TIP006SCH Uni-edit Writing Tip - Presentperfecttenseandpasttenseinyourintroduction readytopublish

Microsoft Word - TIP006SCH Uni-edit Writing Tip - Presentperfecttenseandpasttenseinyourintroduction readytopublish 我 难 度 : 高 级 对 们 现 不 在 知 仍 道 有 听 影 过 响 多 少 那 次 么 : 研 英 究 过 文 论 去 写 文 时 作 的 表 技 引 示 巧 言 事 : 部 情 引 分 发 言 该 生 使 在 中 用 过 去, 而 现 在 完 成 时 仅 表 示 事 情 发 生 在 过 去, 并 的 哪 现 种 在 时 完 态 成 呢 时? 和 难 过 道 去 不 时 相 关? 是 所 有

More information

摘 要 互 联 网 的 勃 兴 为 草 根 阶 层 书 写 自 我 和 他 人 提 供 了 契 机, 通 过 网 络 自 由 开 放 的 平 台, 网 络 红 人 风 靡 于 虚 拟 世 界 近 年 来, 或 无 心 插 柳, 或 有 意 噱 头, 或 自 我 表 达, 或 幕 后 操 纵, 网 络

摘 要 互 联 网 的 勃 兴 为 草 根 阶 层 书 写 自 我 和 他 人 提 供 了 契 机, 通 过 网 络 自 由 开 放 的 平 台, 网 络 红 人 风 靡 于 虚 拟 世 界 近 年 来, 或 无 心 插 柳, 或 有 意 噱 头, 或 自 我 表 达, 或 幕 后 操 纵, 网 络 上 海 外 国 语 大 学 硕 士 学 位 论 文 论 文 题 目 从 偶 像 符 号 的 消 解 到 消 费 符 号 的 建 构 网 络 红 人 的 形 象 变 迁 研 究 学 科 专 业 传 播 学 届 别 2013 届 姓 名 孙 清 导 师 王 玲 宁 I 摘 要 互 联 网 的 勃 兴 为 草 根 阶 层 书 写 自 我 和 他 人 提 供 了 契 机, 通 过 网 络 自 由 开 放 的

More information

untitled

untitled 20 90 1998 2001 1 Abstract Under the environment of drastic competitive market, risk and uncertainty that the enterprise faces are greater and greater, the profit ability of enterprise assets rises and

More information

KDC-U5049 KDC-U4049 Made for ipod, and Made for iphone mean that an electronic accessory has been designed to connect specifically to ipod, or iphone,

KDC-U5049 KDC-U4049 Made for ipod, and Made for iphone mean that an electronic accessory has been designed to connect specifically to ipod, or iphone, KDC-U5049 KDC-U4049 Made for ipod, and Made for iphone mean that an electronic accessory has been designed to connect specifically to ipod, or iphone, respectively, and has been certified by the developer

More information

附 件 三 高 雄 市 政 府 及 所 屬 各 機 關 公 務 出 國 報 告 書 審 核 表 出 國 報 告 書 名 稱 :105 年 長 野 縣 茅 野 市 姐 妹 校 交 流 活 動 出 國 人 員 姓 名 (2 人 以 上, 以 1 人 為 代 表 ) 職 稱 服 務 單 位 洪 薏 婷 教

附 件 三 高 雄 市 政 府 及 所 屬 各 機 關 公 務 出 國 報 告 書 審 核 表 出 國 報 告 書 名 稱 :105 年 長 野 縣 茅 野 市 姐 妹 校 交 流 活 動 出 國 人 員 姓 名 (2 人 以 上, 以 1 人 為 代 表 ) 職 稱 服 務 單 位 洪 薏 婷 教 附 件 二 高 雄 市 政 府 公 務 出 國 報 告 書 ( 出 國 類 別 : 國 際 教 育 旅 行 ) 105 年 長 野 縣 茅 野 市 姐 妹 校 交 流 活 動 服 務 機 關 : 高 雄 市 立 新 興 高 級 中 學 高 雄 市 立 五 福 國 民 中 學 高 雄 市 立 光 華 國 民 中 學 高 雄 市 立 國 昌 國 民 中 學 高 雄 市 立 旗 山 國 民 中 學 姓 名

More information

(2008) 主 张 教 师 在 课 文 教 学 中 应 让 学 生 有 意 识 地 注 意 语 块, 并 指 出 语 块 教 学 对 大 学 生 的 英 语 写 作 能 力 有 着 重 要 的 意 义 于 秀 莲 (2008) 以 大 学 生 为 受 试 对 象, 在 对 不 同 学 生 分 别

(2008) 主 张 教 师 在 课 文 教 学 中 应 让 学 生 有 意 识 地 注 意 语 块, 并 指 出 语 块 教 学 对 大 学 生 的 英 语 写 作 能 力 有 着 重 要 的 意 义 于 秀 莲 (2008) 以 大 学 生 为 受 试 对 象, 在 对 不 同 学 生 分 别 第 17 卷 第 1 期 2015 年 2 月 基 础 英 语 教 育 Journal of Basic English Education Vol. 17, No. 1 Feb., 2015 结 合 语 块 教 学 提 高 中 下 水 平 学 生 写 作 能 力 的 研 究 曾 燕 文 摘 要 : 随 着 广 东 高 考 英 语 写 作 比 重 的 增 加, 如 何 提 高 中 下 水 平 学 生

More information

概述

概述 OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3

More information

2/80 2

2/80 2 2/80 2 3/80 3 DSP2400 is a high performance Digital Signal Processor (DSP) designed and developed by author s laboratory. It is designed for multimedia and wireless application. To develop application

More information

Microsoft Word - HC20138_2010.doc

Microsoft Word - HC20138_2010.doc Page: 1 of 7 Date: April 26, 2010 WINMATE COMMUNICATION INC. 9 F, NO. 111-6, SHING-DE RD., SAN-CHUNG CITY, TAIPEI, TAIWAN, R.O.C. The following merchandise was submitted and identified by the vendor as:

More information

: : : : : ISBN / C53:H : 19.50

: : : : : ISBN / C53:H : 19.50 : : : : 2002 1 1 2002 1 1 : ISBN 7-224-06364-9 / C53:H059-53 : 19.50 50,,,,,,, ; 50,,,,,,,, 1 ,,,,,,,,,,,,,, ;,,,,,,,,, 2 ,,,, 2002 8 3 ( 1 ) ( 1 ) Deduction One Way of Deriving the Meaning of U nfamiliar

More information

川 外 250 人, 上 外 222 人, 广 外 209 人, 西 外 195 人, 北 外 168 人, 中 南 大 学 135 人, 西 南 大 学 120 人, 湖 南 大 学 115 人, 天 外 110 人, 大 连 外 国 语 学 院 110 人, 上 海 外 事 学 院 110 人,

川 外 250 人, 上 外 222 人, 广 外 209 人, 西 外 195 人, 北 外 168 人, 中 南 大 学 135 人, 西 南 大 学 120 人, 湖 南 大 学 115 人, 天 外 110 人, 大 连 外 国 语 学 院 110 人, 上 海 外 事 学 院 110 人, 关 于 考 研 准 备 的 几 点 建 议 主 讲 : 张 伯 香 如 何 选 择 学 校 和 专 业 一. 按 招 生 性 质, 全 国 高 校 大 致 可 分 为 以 下 几 类 : 1. 综 合 类 院 校 比 较 知 名 的 有 北 大 南 大 复 旦 武 大 中 大 南 开 厦 大 等 这 类 院 校 重 视 科 研 能 力, 考 试 有 一 定 的 难 度, 比 较 适 合 于 那 些

More information

CANVIO_AEROCAST_CS_EN.indd

CANVIO_AEROCAST_CS_EN.indd 简 体 中 文...2 English...4 SC5151-A0 简 体 中 文 步 骤 2: 了 解 您 的 CANVIO AeroCast CANVIO AeroCast 无 线 移 动 硬 盘 快 速 入 门 指 南 欢 迎 并 感 谢 您 选 择 TOSHIBA 产 品 有 关 您 的 TOSHIBA 产 品 的 详 情, 请 参 阅 包 含 更 多 信 息 的 用 户 手 册 () 安

More information

RAID RAID 0 RAID 1 RAID 5 RAID * ( -1)* ( /2)* No Yes Yes Yes A. B. BIOS SATA C. RAID BIOS RAID ( ) D. SATA RAID/AHCI ( ) SATA M.2 SSD ( )

RAID RAID 0 RAID 1 RAID 5 RAID * ( -1)* ( /2)* No Yes Yes Yes A. B. BIOS SATA C. RAID BIOS RAID ( ) D. SATA RAID/AHCI ( ) SATA M.2 SSD ( ) RAID RAID 0 RAID 1 RAID 5 RAID 10 2 2 3 4 * (-1)* (/2)* No Yes Yes Yes A. B. BIOS SATA C. RAID BIOS RAID ( ) D. SATA RAID/AHCI ( ) SATA M.2 SSD ( ) ( ) ( ) Windows USB 1 SATA A. SATASATAIntel SATA (SATA3

More information

國立中山大學學位論文典藏.PDF

國立中山大學學位論文典藏.PDF I II III The Study of Factors to the Failure or Success of Applying to Holding International Sport Games Abstract For years, holding international sport games has been Taiwan s goal and we are on the way

More information

Ác Åé å Serial ATA ( Sil3132) S A T A (1) SATA (2) BIOS SATA (3)* RAID BIOS RAID (4) SATA (5) SATA (a) S A T A ( S A T A R A I D ) (b) (c) Windows XP

Ác Åé å Serial ATA ( Sil3132) S A T A (1) SATA (2) BIOS SATA (3)* RAID BIOS RAID (4) SATA (5) SATA (a) S A T A ( S A T A R A I D ) (b) (c) Windows XP Serial ATA ( Sil3132)...2 (1) SATA... 2 (2) B I O S S A T A... 3 (3) RAID BIOS RAID... 6 (4) S A T A... 10 (5) S A T A... 12 Ác Åé å Serial ATA ( Sil3132) S A T A (1) SATA (2) BIOS SATA (3)* RAID BIOS

More information

( 一 ) 實 習 的 時 候 就 和 讀 書 會 的 同 學 一 起 把 陳 嘉 陽 紮 實 地 讀 過 一 遍 了, 也 因 此 在 考 完 教 檢 之 後, 我 們 只 有 把 不 熟 或 是 常 考 的 章 節 再 導 讀 一 次 ( 例 如 : 統 計 行 政 法 規 ), 主 力 則 是

( 一 ) 實 習 的 時 候 就 和 讀 書 會 的 同 學 一 起 把 陳 嘉 陽 紮 實 地 讀 過 一 遍 了, 也 因 此 在 考 完 教 檢 之 後, 我 們 只 有 把 不 熟 或 是 常 考 的 章 節 再 導 讀 一 次 ( 例 如 : 統 計 行 政 法 規 ), 主 力 則 是 確 立 目 標, 全 力 衝 刺 102 年 國 中 英 文 科 教 甄 準 備 心 得 主 修 社 會 教 育 學 系 輔 修 英 語 學 系 100 級 臺 北 市 立 東 湖 國 民 中 學 王 建 順 壹 102 國 中 英 文 科 教 甄 準 備 心 得 -- 筆 試 篇 有 幸 能 在 第 一 年 的 第 一 場 國 中 教 甄 脫 穎 而 出, 一 路 上 很 感 謝 前 輩 學 長

More information

ebook

ebook 3 3 3.1 3.1.1 ( ) 90 3 1966 B e r n s t e i n P ( i ) R ( i ) W ( i P ( i P ( j ) 1) R( i) W( j)=φ 2) W( i) R( j)=φ 3) W( i) W( j)=φ 3.1.2 ( p r o c e s s ) 91 Wi n d o w s Process Control Bl o c k P C

More information

Microsoft PowerPoint - STU_EC_Ch08.ppt

Microsoft PowerPoint - STU_EC_Ch08.ppt 樹德科技大學資訊工程系 Chapter 8: Counters Shi-Huang Chen Fall 2010 1 Outline Asynchronous Counter Operation Synchronous Counter Operation Up/Down Synchronous Counters Design of Synchronous Counters Cascaded Counters

More information

<4D6963726F736F667420576F7264202D205F4230365FB942A5CEA668B443C5E9BB73A740B5D8A4E5B8C9A552B1D0A7F75FA6BFB1A4ACFC2E646F63>

<4D6963726F736F667420576F7264202D205F4230365FB942A5CEA668B443C5E9BB73A740B5D8A4E5B8C9A552B1D0A7F75FA6BFB1A4ACFC2E646F63> 運 用 多 媒 體 製 作 華 文 補 充 教 材 江 惜 美 銘 傳 大 學 應 用 中 文 系 chm248@gmail.com 摘 要 : 本 文 旨 在 探 究 如 何 運 用 多 媒 體, 結 合 文 字 聲 音 圖 畫, 製 作 華 文 補 充 教 材 當 我 們 在 進 行 華 文 教 學 時, 往 往 必 須 透 過 教 案 設 計, 並 製 作 補 充 教 材, 方 能 使 教 學

More information