*
This commit is contained in:
parent
cdbec2b91f
commit
7a18fddeb4
3
SCR1.1/Meetgenda.sh
Executable file
3
SCR1.1/Meetgenda.sh
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
Dernier_Repertoire=$pwd
|
||||
cd ~/public_html/Meetgenda && git pull && cd $Dernier_Repertoire
|
20
SCR1.1/find_bigger_files.sh
Executable file
20
SCR1.1/find_bigger_files.sh
Executable file
@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
# A simple program to find
|
||||
# in the active directory
|
||||
# the bigger files.
|
||||
|
||||
if [[$# -ne 1]]
|
||||
then
|
||||
echo "Usage : ./$0 <FOLDER_NAME>"
|
||||
exit
|
||||
fi
|
||||
|
||||
ls -l $1 > $($1_files.txt)
|
||||
bigger_file=0
|
||||
for ligne in $(<$1_files.txt)
|
||||
do
|
||||
echo "$ligne"
|
||||
done
|
||||
|
||||
exit
|
||||
|
22
SCR2.1/ngwalang-number-weight.s
Normal file
22
SCR2.1/ngwalang-number-weight.s
Normal file
@ -0,0 +1,22 @@
|
||||
.equ SYS_EXIT ,93
|
||||
.data
|
||||
int: .word -1
|
||||
.text
|
||||
.globl _start
|
||||
_start:
|
||||
adr x4, int
|
||||
ldr w3, [x4]
|
||||
sxtw x2, w3
|
||||
mov x0, #0
|
||||
loop: cbz x2, exit
|
||||
tbz x2, #0, next
|
||||
add x0, x0, x1
|
||||
next: lsr x2, x2, #1
|
||||
mov x1, 1
|
||||
b loop
|
||||
exit: mov x0, #0
|
||||
mov w8,#SYS_EXIT
|
||||
svc #0x0
|
||||
.end
|
||||
|
||||
|
21
SCR2.1/number-xeight.s
Normal file
21
SCR2.1/number-xeight.s
Normal file
@ -0,0 +1,21 @@
|
||||
.equ SYS_EXIT, 93
|
||||
.data
|
||||
int : .word 12
|
||||
.text
|
||||
.globl _start
|
||||
_start : adr x1, int
|
||||
ldr w0,[x1] //n est dans w0
|
||||
mov w1, #0 //res est dans w1
|
||||
mov w2, #1 //i est dans w2
|
||||
bcl: cmp w2, w0
|
||||
b.gt fin
|
||||
add w1,w1,w2
|
||||
add w2,w2,#1
|
||||
b bcl
|
||||
fin: mov x0,x1
|
||||
mov w8, #SYS_EXIT
|
||||
svc #0
|
||||
.end
|
||||
|
||||
|
||||
|
178
SCR2.2/TP22/DOC/README.Debian
Normal file
178
SCR2.2/TP22/DOC/README.Debian
Normal file
@ -0,0 +1,178 @@
|
||||
DNSSEC validation turned on by default as of BIND 9.8.1
|
||||
-------------------------------------------------------
|
||||
As of version 9.8.1.dfsg-1, BIND ships with DNSSEC validation turned on
|
||||
by default. As the keys get changed over time, this means that a fresh
|
||||
install of BIND will require that the admin manually upgrade bind.keys
|
||||
to account for the change, before BIND will be able to resolve hosts in
|
||||
DNSSEC validated zones.
|
||||
|
||||
|
||||
Upgrading from BIND 8.X:
|
||||
-----------------------
|
||||
|
||||
If you are upgrading an authoritative server from BIND 8.X, please install
|
||||
the bind9-doc package and read /usr/share/doc/bind9-doc/misc/migration.gz,
|
||||
which contains a set of notes from the BIND maintainers on what changed
|
||||
that is likely to need your attention during an upgrade.
|
||||
|
||||
|
||||
Upgrading from earlier bind9 packages:
|
||||
-------------------------------------
|
||||
|
||||
If you installed an early version of the Debian bind9 packages, prior to
|
||||
version 1:9.2.0-2 to be more precise, you may have an /etc/bind/rndc.conf
|
||||
configuration file still on your system. There's nothing wrong with that,
|
||||
and if you've explicitly configured keys for using rndc you may well want to
|
||||
leave things exactly as they are!
|
||||
|
||||
However, since 9.2.0 BIND 9.X has supported an rndc.key file that both named
|
||||
and rndc will read to obtain a shared key for rndc use against a daemon on
|
||||
the same host. The rndc-confgen program will easily create a suitable key
|
||||
file. To take advantage of this mechanism, you may want to:
|
||||
|
||||
remove the /etc/bind/rndc.conf file
|
||||
remove the rndc key specification in the /etc/bind/named.conf file
|
||||
|
||||
rndc-confgen -r /dev/urandom -a
|
||||
|
||||
Alternatively, you can 'purge' the bind9 packages and reinstall them and you
|
||||
will end up with the new behavior since it is now the default.
|
||||
|
||||
This is more secure than using a static key that isn't generated on a per-host
|
||||
basis, and is an easy alternative to more complex key schemes if you only need
|
||||
to use rndc to talk to named on the same host.
|
||||
|
||||
|
||||
Known Issues:
|
||||
------------
|
||||
|
||||
I've had a report that lwresd, at least, fails to work with some recent 2.5
|
||||
kernels. If you see something in your logs like
|
||||
|
||||
loading configuration from '/etc/bind/lwresd.conf'
|
||||
none:0: open: /etc/bind/lwresd.conf: permission denied
|
||||
|
||||
Try rebuilding with --disable-linux-caps added to the configure call in the
|
||||
rules file. I'm hoping this is a temporary problem in the 2.5 kernel series,
|
||||
but we'll see.
|
||||
|
||||
|
||||
Configuration Schema:
|
||||
--------------------
|
||||
|
||||
The Debian BIND package ships with a config that will work for the majority
|
||||
of leaf servers with no user input required.
|
||||
|
||||
The named configuration file named.conf is located in /etc/bind, so that all
|
||||
static configuration files relating to bind are in one place. If you really
|
||||
don't want named.conf in /etc/bind, then the best way to handle it is probably
|
||||
to replace /etc/bind/named.conf with a symlink to the location you want to use.
|
||||
You could also use an option to named in the init.d script, but that only works
|
||||
for named, not for things like ndc.
|
||||
|
||||
Zone data files for the root servers, and the forward and reverse localhost
|
||||
zones are also provided in /etc/bind.
|
||||
|
||||
The working directory for named is now /var/cache/bind. Thus, any transient
|
||||
files generated by named, such as database files for zones the daemon is
|
||||
secondary for, will be written to the /var filesystem, where they belong.
|
||||
|
||||
To make this work, the named.conf provided uses explicitly fully-qualified
|
||||
pathnames to reference the files in /etc/bind.
|
||||
|
||||
Unlike previous BIND packages for Debian, the named.conf and provided db.*
|
||||
files are tagged as conffiles. Thus, if you just want a "caching mostly"
|
||||
server configuration for a server that does not need to be authoritative for
|
||||
anything else, you can run the provided configuration as-is. If you want to
|
||||
hack on named.conf, or even the init.d fragment, you can feel free to. Future
|
||||
package upgrades will treat your configuration changes sanely, as all Debian
|
||||
packages should.
|
||||
|
||||
While you are free to craft whatever structure you wish for servers which need
|
||||
to be authoritative for additional zones, what we suggest is that you put the
|
||||
db files for any zones you are master for in /etc/bind (perhaps even in a
|
||||
subdirectory structure depending on complexity), using full pathnames in the
|
||||
named.conf file. Any zones you are secondary for should be configured in
|
||||
named.conf with simple filenames (relative to /var/cache/bind), so the data
|
||||
files will be stored in BIND's working directory (defaults to /var/cache/bind).
|
||||
Zones subject to automatic updates (such as via DHCP and/or nsupdate) should be
|
||||
stored in /var/lib/bind, and specified with full pathnames.
|
||||
|
||||
|
||||
Running Chroot'ed:
|
||||
-----------------
|
||||
|
||||
Several users have asked for Debian BIND to run in a "chroot jail". There are
|
||||
various issues associated with making this the default configuration for the
|
||||
package in Debian. In the meantime, reasonable instructions on how to do
|
||||
this yourself are available on the web from:
|
||||
|
||||
http://www.tldp.org/HOWTO/Chroot-BIND-HOWTO.html
|
||||
|
||||
|
||||
Running Non-Root:
|
||||
-----------------
|
||||
|
||||
Recent versions of named can be invoked with options that specify a non-root
|
||||
user and/or group for named. Read the named man page for more information.
|
||||
Note that when running named as a user other than root, it will not be able
|
||||
to find new interfaces that appear dynamically, such as during a PCMCIA card
|
||||
insertion, or if you're running some flavors of IPSEC and/or IP over IP
|
||||
tunnels. If you cannot live with those limitations, feel free to edit the
|
||||
/etc/init.d/bind9 script to change the invocation of named.
|
||||
|
||||
The default is now to run as the user 'bind' (which is automatically created
|
||||
in the group 'bind', if it doesn't exist), unless named.conf has been changed.
|
||||
To change this, edit /etc/default/bind9
|
||||
|
||||
Please note that 'ndc restart' doesn't honor all the original command line
|
||||
options to named, so we explicitly don't use it in the init.d script provided
|
||||
with the package, and you should be careful about using it if you decide to
|
||||
run named non-root.
|
||||
|
||||
|
||||
PPP Control Script:
|
||||
-----------------
|
||||
|
||||
Unfortunately, 'ndc reload' will not honor any command line options that were
|
||||
fed to named on the initial invocation. If you can live with that, and
|
||||
want to wiggle your DNS configuration when your PPP link goes up or down, the
|
||||
following script fragment from Francesco Potorti` <pot@gnu.org> may be helpful
|
||||
to you:
|
||||
|
||||
I suggest adding this as bot /etc/ppp/ip-up.d/bind and
|
||||
/etc/ppp/ip-down.d/bind:
|
||||
|
||||
================================================================
|
||||
#!/bin/sh
|
||||
if [ -x /usr/sbin/ndc -a -x /usr/sbin/named ]
|
||||
then
|
||||
/usr/sbin/ndc reload > /dev/null
|
||||
fi
|
||||
================================================================
|
||||
|
||||
This should cause no harm in any case, and should be helpful in these
|
||||
cases:
|
||||
- you configure bind as a forwarder. When ppp is down, it cannot access
|
||||
the network. As soon as ppp is up, it is forced by the script to try
|
||||
again, and it succeeds.
|
||||
- someone writes a clever script that, coupled with the `usepeerdns'
|
||||
command of pppd, makes a forwarding-only bind use the right servers by
|
||||
rewriting the configuration file after ppp goes up. Then the script
|
||||
above makes bind reload the configuration.
|
||||
|
||||
Now, someone should write that clever script :-)
|
||||
|
||||
By the way, this is a badly wanted feature, that should help setting up
|
||||
a ppp connection automatically. Currently, setting up a ppp connection
|
||||
is much easier on a windows system than on linux, and there is really no
|
||||
reason why it should be so, given that all the tools are there.
|
||||
|
||||
|
||||
Apparmor Profile
|
||||
----------------
|
||||
If your system uses apparmor, please note that the shipped enforcing profile
|
||||
works with the default installation, and changes in your configuration may
|
||||
require changes to the installed apparmor profile. Please see
|
||||
https://wiki.ubuntu.com/DebuggingApparmor before filing a bug against this
|
||||
software.
|
19
SCR2.2/TP22/DOC/db.1.168.192.in-addr.arpa
Normal file
19
SCR2.2/TP22/DOC/db.1.168.192.in-addr.arpa
Normal file
@ -0,0 +1,19 @@
|
||||
$TTL 7200
|
||||
@ IN SOA osiris.tp.scr. root.tp.scr. (
|
||||
202306061627 ;Serial
|
||||
3600 ;Refresh
|
||||
60 ;Retry
|
||||
86400 ;Expire
|
||||
600) ;Negative Catching TTL
|
||||
;
|
||||
@ IN NS eno.tp.scr.
|
||||
@ IN NS owt.tp.scr.
|
||||
@ IN NS eerht.tp.scr.
|
||||
@ IN NS ruof.tp.scr.
|
||||
@ IN NS osiris.tp.scr.
|
||||
|
||||
eno IN A 192.168.1.1
|
||||
owt IN A 192.168.1.2
|
||||
eerht IN A 192.168.1.3
|
||||
ruof IN A 192.168.1.4
|
||||
osiris IN A 192.168.1.158
|
15
SCR2.2/TP22/DOC/db.tp.scr
Normal file
15
SCR2.2/TP22/DOC/db.tp.scr
Normal file
@ -0,0 +1,15 @@
|
||||
$TTL 7200
|
||||
@ IN SOA osiris.tp.scr. root.tp.scr. (
|
||||
202306061557 ;Serial
|
||||
3600 ;Refresh
|
||||
60 ;Retry
|
||||
86400 ;Expire
|
||||
600) ;Negative Catching TTL
|
||||
;
|
||||
@ IN NS osiris.tp.scr.
|
||||
|
||||
eno IN A 192.168.1.1
|
||||
owt IN A 192.168.1.2
|
||||
eerht IN A 192.168.1.3
|
||||
ruof IN A 192.168.1.4
|
||||
osiris IN A 192.168.1.158
|
15
SCR2.2/TP22/DOC/db.tp.scr.inv
Normal file
15
SCR2.2/TP22/DOC/db.tp.scr.inv
Normal file
@ -0,0 +1,15 @@
|
||||
$TTL 7200
|
||||
@ IN SOA osiris.tp.scr. root.tp.scr. (
|
||||
202306061557 ;Serial
|
||||
3600 ;Refresh
|
||||
60 ;Retry
|
||||
86400 ;Expire
|
||||
600) ;Negative Catching TTL
|
||||
;
|
||||
@ IN NS osiris.tp.scr.
|
||||
|
||||
eno IN A 192.168.1.1
|
||||
owt IN A 192.168.1.2
|
||||
eerht IN A 192.168.1.3
|
||||
ruof IN A 192.168.1.4
|
||||
osiris IN A 192.168.1.158
|
17
SCR2.2/TP22/DOC/named.conf.local
Normal file
17
SCR2.2/TP22/DOC/named.conf.local
Normal file
@ -0,0 +1,17 @@
|
||||
//
|
||||
// Do any local configuration here
|
||||
//
|
||||
|
||||
// Consider adding the 1918 zones here, if they are not used in your
|
||||
// organization
|
||||
//include "/etc/bind/zones.rfc1918";
|
||||
|
||||
zone "tp.scr" {
|
||||
type master ;
|
||||
file "/etc/bind/db.tp.scr";
|
||||
};
|
||||
zone "1.168.192.in-addr.arpa" {
|
||||
type master ;
|
||||
file "/etc/bind/db.tp.scr.inv";
|
||||
};
|
||||
|
169
SCR2.2/TP22/dns1.imn
Normal file
169
SCR2.2/TP22/dns1.imn
Normal file
@ -0,0 +1,169 @@
|
||||
node n0 {
|
||||
type lanswitch
|
||||
network-config {
|
||||
hostname switch1
|
||||
!
|
||||
}
|
||||
canvas c0
|
||||
iconcoords {456 96}
|
||||
labelcoords {456 119}
|
||||
interface-peer {e0 n1}
|
||||
interface-peer {e1 n2}
|
||||
interface-peer {e2 n3}
|
||||
interface-peer {e3 n4}
|
||||
interface-peer {e4 n5}
|
||||
}
|
||||
|
||||
node n1 {
|
||||
type host
|
||||
network-config {
|
||||
hostname osiris
|
||||
!
|
||||
interface eth0
|
||||
ipv6 address fc00::10/64
|
||||
mac address 42:00:aa:00:00:00
|
||||
ip address 192.168.1.158/24
|
||||
!
|
||||
interface lo0
|
||||
type lo
|
||||
ip address 127.0.0.1/8
|
||||
ipv6 address ::1/128
|
||||
!
|
||||
}
|
||||
canvas c0
|
||||
iconcoords {120 144}
|
||||
labelcoords {120 180}
|
||||
interface-peer {eth0 n0}
|
||||
}
|
||||
|
||||
node n2 {
|
||||
type pc
|
||||
network-config {
|
||||
hostname eno
|
||||
!
|
||||
interface eth0
|
||||
ipv6 address fc00::20/64
|
||||
mac address 42:00:aa:00:00:01
|
||||
ip address 192.168.1.1/24
|
||||
!
|
||||
interface lo0
|
||||
type lo
|
||||
ip address 127.0.0.1/8
|
||||
ipv6 address ::1/128
|
||||
!
|
||||
}
|
||||
canvas c0
|
||||
iconcoords {216 288}
|
||||
labelcoords {216 319}
|
||||
interface-peer {eth0 n0}
|
||||
}
|
||||
|
||||
node n3 {
|
||||
type pc
|
||||
network-config {
|
||||
hostname owt
|
||||
!
|
||||
interface eth0
|
||||
ipv6 address fc00::21/64
|
||||
mac address 42:00:aa:00:00:02
|
||||
ip address 192.168.1.2/24
|
||||
!
|
||||
interface lo0
|
||||
type lo
|
||||
ip address 127.0.0.1/8
|
||||
ipv6 address ::1/128
|
||||
!
|
||||
}
|
||||
canvas c0
|
||||
iconcoords {384 360}
|
||||
labelcoords {384 391}
|
||||
interface-peer {eth0 n0}
|
||||
}
|
||||
|
||||
node n4 {
|
||||
type pc
|
||||
network-config {
|
||||
hostname eerht
|
||||
!
|
||||
interface eth0
|
||||
ipv6 address fc00::22/64
|
||||
mac address 42:00:aa:00:00:03
|
||||
ip address 192.168.1.3/24
|
||||
!
|
||||
interface lo0
|
||||
type lo
|
||||
ip address 127.0.0.1/8
|
||||
ipv6 address ::1/128
|
||||
!
|
||||
}
|
||||
canvas c0
|
||||
iconcoords {624 360}
|
||||
labelcoords {624 391}
|
||||
interface-peer {eth0 n0}
|
||||
}
|
||||
|
||||
node n5 {
|
||||
type pc
|
||||
network-config {
|
||||
hostname ruof
|
||||
!
|
||||
interface eth0
|
||||
ipv6 address fc00::23/64
|
||||
mac address 42:00:aa:00:00:04
|
||||
ip address 192.168.1.4/24
|
||||
!
|
||||
interface lo0
|
||||
type lo
|
||||
ip address 127.0.0.1/8
|
||||
ipv6 address ::1/128
|
||||
!
|
||||
}
|
||||
canvas c0
|
||||
iconcoords {792 264}
|
||||
labelcoords {792 295}
|
||||
interface-peer {eth0 n0}
|
||||
}
|
||||
|
||||
link l0 {
|
||||
nodes {n0 n1}
|
||||
bandwidth 0
|
||||
}
|
||||
|
||||
link l1 {
|
||||
nodes {n2 n0}
|
||||
bandwidth 0
|
||||
}
|
||||
|
||||
link l2 {
|
||||
nodes {n3 n0}
|
||||
bandwidth 0
|
||||
}
|
||||
|
||||
link l3 {
|
||||
nodes {n4 n0}
|
||||
bandwidth 0
|
||||
}
|
||||
|
||||
link l4 {
|
||||
nodes {n5 n0}
|
||||
bandwidth 0
|
||||
}
|
||||
|
||||
canvas c0 {
|
||||
name {Canvas0}
|
||||
}
|
||||
|
||||
option show {
|
||||
interface_names yes
|
||||
ip_addresses yes
|
||||
ipv6_addresses no
|
||||
node_labels yes
|
||||
link_labels yes
|
||||
background_images no
|
||||
annotations yes
|
||||
hostsAutoAssign no
|
||||
grid yes
|
||||
iconSize normal
|
||||
zoom 1.0
|
||||
}
|
||||
|
518
SCR2.2/TP23/dns2.imn
Normal file
518
SCR2.2/TP23/dns2.imn
Normal file
File diff suppressed because it is too large
Load Diff
20
SCR2.2/TP23/host10.db.root
Normal file
20
SCR2.2/TP23/host10.db.root
Normal file
@ -0,0 +1,20 @@
|
||||
; This file holds the information on root name servers needed to
|
||||
; initialize cache of Internet domain name servers
|
||||
; (e.g. reference this file in the "cache . <file>"
|
||||
; configuration file of BIND domain name servers).
|
||||
;
|
||||
; This file is made available by InterNIC
|
||||
; under anonymous FTP as
|
||||
; file /domain/named.cache
|
||||
; on server FTP.INTERNIC.NET
|
||||
; -OR- RS.INTERNIC.NET
|
||||
;
|
||||
; last update: June 08, 2023
|
||||
; related version of root zone: 2023060802
|
||||
;
|
||||
;
|
||||
; OPERATED BY WIDE
|
||||
;
|
||||
. 3600000 NS ROOT-SERV.
|
||||
ROOT-SERV. 3600000 A 90.90.0.10
|
||||
; End of file
|
92
SCR2.2/TP23/named.root
Normal file
92
SCR2.2/TP23/named.root
Normal file
@ -0,0 +1,92 @@
|
||||
; This file holds the information on root name servers needed to
|
||||
; initialize cache of Internet domain name servers
|
||||
; (e.g. reference this file in the "cache . <file>"
|
||||
; configuration file of BIND domain name servers).
|
||||
;
|
||||
; This file is made available by InterNIC
|
||||
; under anonymous FTP as
|
||||
; file /domain/named.cache
|
||||
; on server FTP.INTERNIC.NET
|
||||
; -OR- RS.INTERNIC.NET
|
||||
;
|
||||
; last update: June 08, 2023
|
||||
; related version of root zone: 2023060802
|
||||
;
|
||||
; FORMERLY NS.INTERNIC.NET
|
||||
;
|
||||
. 3600000 NS A.ROOT-SERVERS.NET.
|
||||
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
|
||||
A.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:ba3e::2:30
|
||||
;
|
||||
; FORMERLY NS1.ISI.EDU
|
||||
;
|
||||
. 3600000 NS B.ROOT-SERVERS.NET.
|
||||
B.ROOT-SERVERS.NET. 3600000 A 199.9.14.201
|
||||
B.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:200::b
|
||||
;
|
||||
; FORMERLY C.PSI.NET
|
||||
;
|
||||
. 3600000 NS C.ROOT-SERVERS.NET.
|
||||
C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12
|
||||
C.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2::c
|
||||
;
|
||||
; FORMERLY TERP.UMD.EDU
|
||||
;
|
||||
. 3600000 NS D.ROOT-SERVERS.NET.
|
||||
D.ROOT-SERVERS.NET. 3600000 A 199.7.91.13
|
||||
D.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2d::d
|
||||
;
|
||||
; FORMERLY NS.NASA.GOV
|
||||
;
|
||||
. 3600000 NS E.ROOT-SERVERS.NET.
|
||||
E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10
|
||||
E.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:a8::e
|
||||
;
|
||||
; FORMERLY NS.ISC.ORG
|
||||
;
|
||||
. 3600000 NS F.ROOT-SERVERS.NET.
|
||||
F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241
|
||||
F.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2f::f
|
||||
;
|
||||
; FORMERLY NS.NIC.DDN.MIL
|
||||
;
|
||||
. 3600000 NS G.ROOT-SERVERS.NET.
|
||||
G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4
|
||||
G.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:12::d0d
|
||||
;
|
||||
; FORMERLY AOS.ARL.ARMY.MIL
|
||||
;
|
||||
. 3600000 NS H.ROOT-SERVERS.NET.
|
||||
H.ROOT-SERVERS.NET. 3600000 A 198.97.190.53
|
||||
H.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:1::53
|
||||
;
|
||||
; FORMERLY NIC.NORDU.NET
|
||||
;
|
||||
. 3600000 NS I.ROOT-SERVERS.NET.
|
||||
I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17
|
||||
I.ROOT-SERVERS.NET. 3600000 AAAA 2001:7fe::53
|
||||
;
|
||||
; OPERATED BY VERISIGN, INC.
|
||||
;
|
||||
. 3600000 NS J.ROOT-SERVERS.NET.
|
||||
J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30
|
||||
J.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:c27::2:30
|
||||
;
|
||||
; OPERATED BY RIPE NCC
|
||||
;
|
||||
. 3600000 NS K.ROOT-SERVERS.NET.
|
||||
K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129
|
||||
K.ROOT-SERVERS.NET. 3600000 AAAA 2001:7fd::1
|
||||
;
|
||||
; OPERATED BY ICANN
|
||||
;
|
||||
. 3600000 NS L.ROOT-SERVERS.NET.
|
||||
L.ROOT-SERVERS.NET. 3600000 A 199.7.83.42
|
||||
L.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:9f::42
|
||||
;
|
||||
; OPERATED BY WIDE
|
||||
;
|
||||
. 3600000 NS M.ROOT-SERVERS.NET.
|
||||
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
|
||||
M.ROOT-SERVERS.NET. 3600000 AAAA 2001:dc3::35
|
||||
; End of file
|
13
SCR2.2/TP23/root-serv.db.root
Normal file
13
SCR2.2/TP23/root-serv.db.root
Normal file
@ -0,0 +1,13 @@
|
||||
@ IN SOA ROOT-SERV. root. (
|
||||
2007010401 ; Serial
|
||||
3600 ; Refresh [1h]
|
||||
600 ; Retry [10m]
|
||||
86400 ; Expire [1d]
|
||||
600 ) ; Negative Cache TTL [1h]
|
||||
;
|
||||
mos IN NS sethi.
|
||||
mos IN NS kheops.
|
||||
|
||||
sethi.mos. IN A 80.80.0.20
|
||||
kheops.mos. IN A 80.80.0.10
|
||||
|
BIN
SCR2.2/TP23/tp23.SCR.2.2.pdf
Normal file
BIN
SCR2.2/TP23/tp23.SCR.2.2.pdf
Normal file
Binary file not shown.
@ -5,7 +5,6 @@
|
||||
#include <stdlib.h>
|
||||
#include <wait.h>
|
||||
#include <fcntl.h>
|
||||
de
|
||||
|
||||
int main(int argc, char **argv){
|
||||
if (argc != 3){
|
||||
@ -14,7 +13,7 @@ int main(int argc, char **argv){
|
||||
}
|
||||
pid_t p;
|
||||
int fd1, fd2;
|
||||
char buf[BUF_SIZE];
|
||||
char buf1, buf2;
|
||||
fd1 = open(argv[1], O_RDONLY);
|
||||
fd2 = open(argv[2], O_RDONLY);
|
||||
if (fd1 == -1 || fd2 == -1){
|
||||
@ -27,5 +26,10 @@ int main(int argc, char **argv){
|
||||
perror("Error while creating a new process");
|
||||
return EXIT_FAILURE;
|
||||
case 0:
|
||||
while(read
|
||||
// Read file a
|
||||
read(fd1, &buf1, sizeof(char));
|
||||
default:
|
||||
//Read file b & compare both files
|
||||
read(fd2, &buf2, sizeof(char));
|
||||
|
||||
|
||||
|
36
SCR3.1/TP5/ex3.c
Normal file
36
SCR3.1/TP5/ex3.c
Normal file
@ -0,0 +1,36 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <assert.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
long int fibo (long int n)
|
||||
{
|
||||
if (n <= 1)
|
||||
return n;
|
||||
long int pipe[2];
|
||||
pid_t proc;
|
||||
assert (pipe(pipe) >= 0);
|
||||
proc = fork();
|
||||
assert(proc != -1);
|
||||
switch(p){
|
||||
case 0:
|
||||
break;
|
||||
default:
|
||||
/*code*/
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
long int n;
|
||||
assert(argc > 1);
|
||||
n=strtol(argv[1],NULL,0);
|
||||
printf("fibo(%ld) = %ld\n",n,fibo(n));
|
||||
return 0;
|
||||
}
|
||||
|
74
SCR3.1/TP6/ex3.c
Normal file
74
SCR3.1/TP6/ex3.c
Normal file
@ -0,0 +1,74 @@
|
||||
#include <assert.h>
|
||||
#include <pthread.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
|
||||
static inline double tstamp(void)
|
||||
{
|
||||
struct timespec tv;
|
||||
clock_gettime(CLOCK_REALTIME, &tv);
|
||||
return tv.tv_sec + tv.tv_nsec * 1.0e-9;
|
||||
}
|
||||
|
||||
typedef struct thread_arg
|
||||
{
|
||||
long int start;
|
||||
long int limit;
|
||||
long int inc;
|
||||
long int S;
|
||||
} thread_arg;
|
||||
|
||||
void *slice(void *arg)
|
||||
{
|
||||
thread_arg *a = (thread_arg *)arg;
|
||||
long int S = 0;
|
||||
|
||||
for (long int i = a->start; i <= a->limit; i = i + a->inc)
|
||||
{
|
||||
S += i;
|
||||
}
|
||||
a->S = S;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
long int N, M, S = 0;
|
||||
thread_arg *args;
|
||||
pthread_t *ths;
|
||||
double t1, t2;
|
||||
|
||||
assert(argc >= 3);
|
||||
N = strtol(argv[1], NULL, 0);
|
||||
M = strtol(argv[2], NULL, 0);
|
||||
t1 = tstamp();
|
||||
|
||||
args = (thread_arg *)calloc(M, sizeof(thread_arg));
|
||||
assert(args != NULL);
|
||||
|
||||
ths = (pthread_t *)calloc(M, sizeof(pthread_t));
|
||||
assert(ths != NULL);
|
||||
|
||||
for (int i = 0; i < M; i++)
|
||||
{
|
||||
args[i].inc = M;
|
||||
args[i].limit = N;
|
||||
args[i].start = i + 1;
|
||||
pthread_create(ths + i, NULL, slice, (void *)(args + i));
|
||||
}
|
||||
|
||||
for (int i = 0; i < M; i++)
|
||||
{
|
||||
pthread_join(ths[i], NULL);
|
||||
S += args[i].S;
|
||||
}
|
||||
|
||||
assert(S == N * (N + 1) / 2);
|
||||
|
||||
t2 = tstamp();
|
||||
printf("S = %ld\n", S);
|
||||
printf("t = %lf\n", t2 - t1);
|
||||
|
||||
return 0;
|
||||
}
|
BIN
SCR3.1/TP6/max
Executable file
BIN
SCR3.1/TP6/max
Executable file
Binary file not shown.
@ -3,15 +3,18 @@
|
||||
#include <assert.h>
|
||||
|
||||
struct stack_t {
|
||||
/*
|
||||
votre implantation
|
||||
|
||||
*/
|
||||
int size;
|
||||
int * tableau;
|
||||
int index;
|
||||
};
|
||||
|
||||
|
||||
stack_t * stack_create( int max_size)
|
||||
{
|
||||
|
||||
stack_t new;
|
||||
new.size = max_size;
|
||||
new.index = index;
|
||||
return *new;
|
||||
}
|
||||
|
||||
|
||||
@ -22,11 +25,22 @@ int stack_destroy(stack_t * s)
|
||||
|
||||
int stack_push(stack_t *s,int val)
|
||||
{
|
||||
|
||||
if (s->index == 0){
|
||||
s->tableau = malloc(s->size * sizeof(int);
|
||||
}
|
||||
if (s->index == s->size - 1){
|
||||
return -1
|
||||
}
|
||||
s->tableau[value]=val;
|
||||
s->value = s->value + 1;
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
int stack_pop(stack_t *s,int * val)
|
||||
{
|
||||
|
||||
if (s->index == 0){
|
||||
return -1;
|
||||
}
|
||||
s->
|
||||
}
|
||||
|
||||
|
62
SCR3.1/devoir27/TaF27
Normal file
62
SCR3.1/devoir27/TaF27
Normal file
@ -0,0 +1,62 @@
|
||||
Créez un répertoire cntr_r3.05, et pour chaque exercice un sous-répertoire (Ex1,
|
||||
Ex2, etc.) pour y placer vos réponses.
|
||||
|
||||
Les exercices sont indépendants. Vous rendrez une archive compressée à la fin de
|
||||
l'épreuve sur le site :
|
||||
|
||||
http://www.iut-fbleau.fr/site/site/DEVOIR
|
||||
|
||||
# EX1
|
||||
1) Ecrivez un programme gdf1.c qui implante le diagramme de processus
|
||||
conforme à la sortie suivante de la commande ps :
|
||||
|
||||
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
|
||||
0 S 1000 30539 28785 0 80 0 - 1039 hrtime pts/0 00:00:00 a.out
|
||||
1 S 1000 30542 30539 0 80 0 - 1039 hrtime pts/0 00:00:00 \_ a.out
|
||||
1 S 1000 30544 30542 0 80 0 - 1039 hrtime pts/0 00:00:00 \_ a.out
|
||||
1 S 1000 30546 30544 0 80 0 - 1039 hrtime pts/0 00:00:00 | \_ a.out
|
||||
1 S 1000 30545 30542 0 80 0 - 1039 hrtime pts/0 00:00:00 \_ a.out
|
||||
|
||||
2) Expliquez (dans gdf2.txt) ce que provoque kill -TERM 30544.
|
||||
|
||||
3) Modifiez votre programme (gdf3.c) pour que le processus correspondant à 30546 utilise un
|
||||
tube pour communiquer son PID au le processus correspondant à 30539.
|
||||
|
||||
# EX2
|
||||
Le sous-repertoire 'src/' de votre répértoire de travail contient le source du
|
||||
programme 'cachetst.c'. Ce programme peut être utilisé pour tester certaines
|
||||
propriétés de la mémoire cache. Il crée une liste de structures et effectue
|
||||
plusieurs passages par cette liste en faisant un test sur chaque élément.
|
||||
|
||||
La longueur de la liste et le nombre de passages (itérations) doivent être
|
||||
donnsés sur la ligne de commande. Compilez et lancez ce programme avec par
|
||||
exemple les valeurs '1000' '1000' sur la ligne de commande pour voir ce qu'il
|
||||
calcule. Augmentez ces valeurs en prenant '10000' '100000' pour voir que le
|
||||
temps de calcul est assez long.
|
||||
|
||||
Votre travail consiste à rajouter une partie de code à ce programme (appelez le
|
||||
'vcachetst.c') pour qu'il affiche le nombre de tests actuellement
|
||||
passés (la valeur de la variable 'z') après un ctrl + z depuis le terminal.
|
||||
|
||||
Mettez le source du programme 'vcachetst.c' dans le sous-repertoire 'src/'
|
||||
|
||||
# EX3
|
||||
Écrire un programme où un processus père crée deux fils ; chaque fils attend un
|
||||
couple d'entiers (x, y) du père et le renvoie dans l'ordre croissant. (combien
|
||||
faut-il de tubes ?)
|
||||
|
||||
1. Le père prend quatre entiers a, b, c, d sur la ligne de commande,
|
||||
|
||||
2. il ordonne les couples (a1 , b1) et (c1, d1) grâce à ses deux fils (le père
|
||||
donne le travail à **ses deux fils** avant de récupèrer le résultat)
|
||||
|
||||
3. Puis il ordonne les couples (a1, c1) et (b1, d1) grâce à ses deux fils, et
|
||||
il obtient les couples (a2, c2) et (b2, d2).
|
||||
|
||||
4. Finalement, il ordonne le couple (c2 , b2) à l'aide d'un fils Il obtient le.
|
||||
couple (c3, b3) .
|
||||
|
||||
5. Il affiche (a2 , c3 , b3 , d2).
|
||||
|
||||
On vieillera à fermer les descripteurs de fichiers inutilisés, à ne pas
|
||||
dupliquer du code inutiliement.
|
17
SCR3.1/devoir27/ex1/gdf1.c
Normal file
17
SCR3.1/devoir27/ex1/gdf1.c
Normal file
@ -0,0 +1,17 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
int main(void){
|
||||
pid_t x, x1, x2, x3;
|
||||
x1 = fork();
|
||||
if (x1 == 0){
|
||||
x2=fork();
|
||||
if (x2 == 0)
|
||||
x = fork();
|
||||
x3=fork();
|
||||
}
|
||||
}
|
||||
|
||||
|
1
SCR3.1/devoir27/ex1/gdf2.txt
Normal file
1
SCR3.1/devoir27/ex1/gdf2.txt
Normal file
@ -0,0 +1 @@
|
||||
La commande "kill -TERM 30544" provoque l'arrêt forcé du processus 30544, à cause du signal de terminaison envoyé
|
38
SCR3.1/devoir27/ex1/gdf3.c
Normal file
38
SCR3.1/devoir27/ex1/gdf3.c
Normal file
@ -0,0 +1,38 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <assert.h>
|
||||
#include <fcntl.h>
|
||||
#define BUF_SIZE 128
|
||||
|
||||
int main(void){
|
||||
pid_t x, x1, x2, x3;
|
||||
int p[2];
|
||||
char buf;
|
||||
assert(pipe(p) != -1);
|
||||
x1 = fork();
|
||||
if (x1 == 0){
|
||||
x2=fork();
|
||||
if (x2 == 0){
|
||||
x = fork();
|
||||
if (x == 0){
|
||||
close(p[0]);
|
||||
dup2(p[1], 1);
|
||||
close(p[1]);
|
||||
printf("%d", getpid());
|
||||
}
|
||||
x3=fork();
|
||||
}
|
||||
sleep(1);
|
||||
}
|
||||
if (x1 > 0){
|
||||
close(p[1]);
|
||||
while(read(p[0], &buf, sizeof(char)) > 0)
|
||||
write(1, &buf, sizeof(char));
|
||||
}
|
||||
close(p[0]);
|
||||
printf("\n");
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
|
19
SCR3.1/devoir27/ex2/helpers.c
Normal file
19
SCR3.1/devoir27/ex2/helpers.c
Normal file
@ -0,0 +1,19 @@
|
||||
#include "helpers.h"
|
||||
#include <signal.h>
|
||||
#include <time.h>
|
||||
|
||||
int set_signal_handler(int signo, void (*handler)(int)) {
|
||||
struct sigaction sa;
|
||||
sa.sa_handler = handler; // call `handler` on signal
|
||||
sigemptyset(&sa.sa_mask); // don't block other signals in handler
|
||||
sa.sa_flags = SA_RESTART; // restart system calls
|
||||
return sigaction(signo, &sa, NULL);
|
||||
}
|
||||
|
||||
double tstamp(void) {
|
||||
struct timespec tv;
|
||||
clock_gettime(CLOCK_REALTIME, &tv);
|
||||
return tv.tv_sec + tv.tv_nsec * 1.0e-9;
|
||||
}
|
||||
|
||||
|
7
SCR3.1/devoir27/ex2/helpers.h
Normal file
7
SCR3.1/devoir27/ex2/helpers.h
Normal file
@ -0,0 +1,7 @@
|
||||
#ifndef _HELPERS_H
|
||||
#define _HELPERS_H
|
||||
|
||||
int set_signal_handler(int signo, void (*handler)(int));
|
||||
double tstamp(void);
|
||||
|
||||
#endif
|
95
SCR3.1/devoir27/ex2/vcachetest.c
Normal file
95
SCR3.1/devoir27/ex2/vcachetest.c
Normal file
@ -0,0 +1,95 @@
|
||||
#include <stdint.h>
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <x86intrin.h>
|
||||
#include <signal.h>
|
||||
#include "helpers.c"
|
||||
#include "helpers.h"
|
||||
|
||||
|
||||
#define PLSIZE 63
|
||||
|
||||
|
||||
|
||||
struct lst {
|
||||
struct lst * next;
|
||||
long int payload[PLSIZE];
|
||||
} l;
|
||||
|
||||
|
||||
struct lst * mkws(int size)
|
||||
{
|
||||
int i,j;
|
||||
struct lst * ws0,*ws;
|
||||
|
||||
if (size == 0)
|
||||
return NULL;
|
||||
|
||||
srand(time(0));
|
||||
ws = calloc(1,sizeof(struct lst));
|
||||
ws->next = NULL;
|
||||
|
||||
for (i=0;i<PLSIZE;i++)
|
||||
ws->payload[i]=(rand())%2;
|
||||
|
||||
for (j=1;j<size;j++) {
|
||||
ws0=ws;
|
||||
ws = calloc(1,sizeof(struct lst));
|
||||
if (ws==NULL) {
|
||||
fprintf(stderr,"Can't add element...\n");
|
||||
exit(1);
|
||||
}
|
||||
for (i=0;i<PLSIZE;i++)
|
||||
ws->payload[i]=(rand())%2;
|
||||
ws->next = ws0;
|
||||
}
|
||||
return ws;
|
||||
}
|
||||
|
||||
long int z = 0;
|
||||
|
||||
void kill_prg(int){
|
||||
printf("Nombre de tests effectués: %ld\n", z);
|
||||
}
|
||||
|
||||
int main(int argc, char ** argv)
|
||||
{
|
||||
struct lst * ws, * ws0;
|
||||
|
||||
long long int start, end, dif;
|
||||
|
||||
long int i, x, size, it;
|
||||
|
||||
if (argc != 3) {
|
||||
printf("Usage: %s <list size> <iterations>\n",argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
set_signal_handler(SIGTSTP, &kill_prg);
|
||||
size=strtol(argv[1],NULL,0);
|
||||
|
||||
ws = mkws(size);
|
||||
if (ws == NULL) {
|
||||
printf("NIL list created...\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
it = strtol(argv[2],NULL,0);
|
||||
|
||||
start = __rdtsc();
|
||||
for (i = 0; i < it; i++) {
|
||||
ws0 = ws;
|
||||
while (ws0 != NULL) {
|
||||
x = ws0->payload[3];
|
||||
x++;
|
||||
z++;
|
||||
ws0 = ws0->next;
|
||||
}
|
||||
}
|
||||
end = __rdtsc();
|
||||
|
||||
dif = end - start;
|
||||
printf("Cycles/element = %lf\n", ((double) dif)/((double) size*it));
|
||||
exit(0);
|
||||
}
|
86
SCR3.1/devoir27/ex3/ex3.c
Normal file
86
SCR3.1/devoir27/ex3/ex3.c
Normal file
@ -0,0 +1,86 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
int ordre(int a, int b){
|
||||
if (a < b)
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main(int argc, char** argv){
|
||||
if (argc != 5){
|
||||
printf("Usage : %s <entier1> <entier2> <entier3> <entier4>\n", argv[0]);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
pid_t x1, x2;
|
||||
int p1[2], p2[2],tmp, a, b, c, d;
|
||||
int x3 = strtod(argv[1], NULL), x4 = strtod(argv[2], NULL);
|
||||
pipe(p1);
|
||||
pipe(p2);
|
||||
x1=fork();
|
||||
x2=fork();
|
||||
if (x1 > 0){
|
||||
close(p1[0]);
|
||||
write(p1[1],&x3, sizeof(int));
|
||||
sleep(2);
|
||||
write(p1[1],(int*) &x4, sizeof(int));
|
||||
x3 = strtod(argv[3], NULL);
|
||||
x4 = strtod(argv[4], NULL);
|
||||
write(p2[1], &x3, sizeof(int));
|
||||
sleep(2);
|
||||
write(p2[1], &x3, sizeof(int));
|
||||
close(p1[1]);
|
||||
close(p2[1]);
|
||||
dup(p1[0]);
|
||||
read(p1[0], &a, sizeof(int));
|
||||
sleep(2);
|
||||
read(p1[0], &b, sizeof(int));
|
||||
close(p1[0]);
|
||||
dup(p2[0]);
|
||||
read(p2[0], &c, sizeof(int));
|
||||
sleep(2);
|
||||
read(p2[0], &d, sizeof(int));
|
||||
close(p2[0]);
|
||||
printf("a = %d, b = %d, c = %d, d = %d\n", a, b, c, d);
|
||||
}
|
||||
if (x1 == 0){
|
||||
close(p1[1]);
|
||||
read(p1[0], &x3, sizeof(int));
|
||||
sleep(2);
|
||||
read(p1[0], &x4, sizeof(int));
|
||||
if (!ordre(x3, x4)){
|
||||
tmp = x4;
|
||||
x4 = x3;
|
||||
x3 = tmp;
|
||||
}
|
||||
printf("x3 = %d, x4 = %d", x3, x4);
|
||||
close(p1[0]);
|
||||
write(p1[1], &x3, sizeof(int));
|
||||
sleep(2);
|
||||
write(p1[1], &x4, sizeof(int));
|
||||
}
|
||||
if (x2 == 0){
|
||||
close(p2[1]);
|
||||
read(p2[0], &x3, sizeof(int));
|
||||
sleep(2);
|
||||
read(p2[0], &x4, sizeof(int));
|
||||
ordre(x3, x4);
|
||||
if (!ordre(x3, x4)){
|
||||
tmp = x3;
|
||||
x3 = x4;
|
||||
x4 = x3;
|
||||
}
|
||||
dup(p2[1]);
|
||||
close(p2[0]);
|
||||
write(p2[1], &x3, sizeof(int));
|
||||
sleep(2);
|
||||
write(p2[1], &x4, sizeof(int));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
87
SCR3.1/devoir27/src/cachetst.c
Normal file
87
SCR3.1/devoir27/src/cachetst.c
Normal file
@ -0,0 +1,87 @@
|
||||
#include <stdint.h>
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <x86intrin.h>
|
||||
#include <signal.h>
|
||||
|
||||
#define PLSIZE 63
|
||||
|
||||
|
||||
|
||||
struct lst {
|
||||
struct lst * next;
|
||||
long int payload[PLSIZE];
|
||||
} l;
|
||||
|
||||
|
||||
struct lst * mkws(int size)
|
||||
{
|
||||
int i,j;
|
||||
struct lst * ws0,*ws;
|
||||
|
||||
if (size == 0)
|
||||
return NULL;
|
||||
|
||||
srand(time(0));
|
||||
ws = calloc(1,sizeof(struct lst));
|
||||
ws->next = NULL;
|
||||
|
||||
for (i=0;i<PLSIZE;i++)
|
||||
ws->payload[i]=(rand())%2;
|
||||
|
||||
for (j=1;j<size;j++) {
|
||||
ws0=ws;
|
||||
ws = calloc(1,sizeof(struct lst));
|
||||
if (ws==NULL) {
|
||||
fprintf(stderr,"Can't add element...\n");
|
||||
exit(1);
|
||||
}
|
||||
for (i=0;i<PLSIZE;i++)
|
||||
ws->payload[i]=(rand())%2;
|
||||
ws->next = ws0;
|
||||
}
|
||||
return ws;
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char ** argv)
|
||||
{
|
||||
struct lst * ws, * ws0;
|
||||
|
||||
long long int start, end, dif;
|
||||
|
||||
long int i, x, z = 0, size, it;
|
||||
|
||||
if (argc != 3) {
|
||||
printf("Usage: %s <list size> <iterations>\n",argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
size=strtol(argv[1],NULL,0);
|
||||
|
||||
ws = mkws(size);
|
||||
if (ws == NULL) {
|
||||
printf("NIL list created...\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
it = strtol(argv[2],NULL,0);
|
||||
|
||||
start = __rdtsc();
|
||||
for (i = 0; i < it; i++) {
|
||||
ws0 = ws;
|
||||
while (ws0 != NULL) {
|
||||
x = ws0->payload[3];
|
||||
x++;
|
||||
z++;
|
||||
ws0 = ws0->next;
|
||||
}
|
||||
}
|
||||
end = __rdtsc();
|
||||
|
||||
dif = end - start;
|
||||
printf("Cycles/element = %lf\n", ((double) dif)/((double) size*it));
|
||||
exit(0);
|
||||
}
|
19
SCR3.1/devoir27/src/helpers.c
Normal file
19
SCR3.1/devoir27/src/helpers.c
Normal file
@ -0,0 +1,19 @@
|
||||
#include "helpers.h"
|
||||
#include <signal.h>
|
||||
#include <time.h>
|
||||
|
||||
int set_signal_handler(int signo, void (*handler)(int)) {
|
||||
struct sigaction sa;
|
||||
sa.sa_handler = handler; // call `handler` on signal
|
||||
sigemptyset(&sa.sa_mask); // don't block other signals in handler
|
||||
sa.sa_flags = SA_RESTART; // restart system calls
|
||||
return sigaction(signo, &sa, NULL);
|
||||
}
|
||||
|
||||
double tstamp(void) {
|
||||
struct timespec tv;
|
||||
clock_gettime(CLOCK_REALTIME, &tv);
|
||||
return tv.tv_sec + tv.tv_nsec * 1.0e-9;
|
||||
}
|
||||
|
||||
|
7
SCR3.1/devoir27/src/helpers.h
Normal file
7
SCR3.1/devoir27/src/helpers.h
Normal file
@ -0,0 +1,7 @@
|
||||
#ifndef _HELPERS_H
|
||||
#define _HELPERS_H
|
||||
|
||||
int set_signal_handler(int signo, void (*handler)(int));
|
||||
double tstamp(void);
|
||||
|
||||
#endif
|
95
SCR3.1/devoir27/src/vcachetest.c
Normal file
95
SCR3.1/devoir27/src/vcachetest.c
Normal file
@ -0,0 +1,95 @@
|
||||
#include <stdint.h>
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <x86intrin.h>
|
||||
#include <signal.h>
|
||||
#include "helpers.c"
|
||||
#include "helpers.h"
|
||||
|
||||
|
||||
#define PLSIZE 63
|
||||
|
||||
|
||||
|
||||
struct lst {
|
||||
struct lst * next;
|
||||
long int payload[PLSIZE];
|
||||
} l;
|
||||
|
||||
|
||||
struct lst * mkws(int size)
|
||||
{
|
||||
int i,j;
|
||||
struct lst * ws0,*ws;
|
||||
|
||||
if (size == 0)
|
||||
return NULL;
|
||||
|
||||
srand(time(0));
|
||||
ws = calloc(1,sizeof(struct lst));
|
||||
ws->next = NULL;
|
||||
|
||||
for (i=0;i<PLSIZE;i++)
|
||||
ws->payload[i]=(rand())%2;
|
||||
|
||||
for (j=1;j<size;j++) {
|
||||
ws0=ws;
|
||||
ws = calloc(1,sizeof(struct lst));
|
||||
if (ws==NULL) {
|
||||
fprintf(stderr,"Can't add element...\n");
|
||||
exit(1);
|
||||
}
|
||||
for (i=0;i<PLSIZE;i++)
|
||||
ws->payload[i]=(rand())%2;
|
||||
ws->next = ws0;
|
||||
}
|
||||
return ws;
|
||||
}
|
||||
|
||||
long int z = 0;
|
||||
|
||||
void kill_prg(int){
|
||||
printf("Nombre de tests effectués: %ld\n", z);
|
||||
}
|
||||
|
||||
int main(int argc, char ** argv)
|
||||
{
|
||||
struct lst * ws, * ws0;
|
||||
|
||||
long long int start, end, dif;
|
||||
|
||||
long int i, x, size, it;
|
||||
|
||||
if (argc != 3) {
|
||||
printf("Usage: %s <list size> <iterations>\n",argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
set_signal_handler(SIGTSTP, &kill_prg);
|
||||
size=strtol(argv[1],NULL,0);
|
||||
|
||||
ws = mkws(size);
|
||||
if (ws == NULL) {
|
||||
printf("NIL list created...\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
it = strtol(argv[2],NULL,0);
|
||||
|
||||
start = __rdtsc();
|
||||
for (i = 0; i < it; i++) {
|
||||
ws0 = ws;
|
||||
while (ws0 != NULL) {
|
||||
x = ws0->payload[3];
|
||||
x++;
|
||||
z++;
|
||||
ws0 = ws0->next;
|
||||
}
|
||||
}
|
||||
end = __rdtsc();
|
||||
|
||||
dif = end - start;
|
||||
printf("Cycles/element = %lf\n", ((double) dif)/((double) size*it));
|
||||
exit(0);
|
||||
}
|
BIN
SCR3.1/gdf
Executable file
BIN
SCR3.1/gdf
Executable file
Binary file not shown.
34
SCR3.1/gdf.c
Normal file
34
SCR3.1/gdf.c
Normal file
@ -0,0 +1,34 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <signal.h>
|
||||
|
||||
|
||||
int main(void){
|
||||
pid_t x1,x2,x3,x4;
|
||||
x1=fork();
|
||||
if (x1 == 0){
|
||||
x2=fork();
|
||||
if (x2>0) {
|
||||
sleep(10);
|
||||
kill(x2,SIGINT);
|
||||
}
|
||||
if (x2 == 0) {
|
||||
x3=fork();
|
||||
if (x3 == 0)
|
||||
x4=fork();
|
||||
if (x3 > 0){
|
||||
sleep(5);
|
||||
kill(x3,SIGINT);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (x1 > 0)
|
||||
x4=fork();
|
||||
while(1) {
|
||||
printf(" %d\n", getpid());
|
||||
sleep(1);
|
||||
}
|
||||
}
|
||||
|
BIN
arm/.small-loop.s.swp
Normal file
BIN
arm/.small-loop.s.swp
Normal file
Binary file not shown.
15
arm/add-int.s
Normal file
15
arm/add-int.s
Normal file
@ -0,0 +1,15 @@
|
||||
.equ SYS_EXIT, 93
|
||||
.data
|
||||
int1 : .quad 0x15
|
||||
int2 : .quad 0x2
|
||||
.text
|
||||
.global _start
|
||||
|
||||
_start: adr x3, int1
|
||||
ldr x0, [x3]
|
||||
adr x3, int2
|
||||
ldr x1, [x3]
|
||||
add x2,x0,x1
|
||||
mov x0, #0
|
||||
mov w8, #SYS_EXIT
|
||||
svc #0
|
16
arm/adds-int32.s
Normal file
16
arm/adds-int32.s
Normal file
@ -0,0 +1,16 @@
|
||||
.equ SYS_EXIT, 93
|
||||
.data
|
||||
int1 : .word 0x7fffffff
|
||||
int2 : .word 0x1
|
||||
.text
|
||||
.global _start
|
||||
|
||||
_start: adr x3, int1
|
||||
ldr w0, [x3]
|
||||
adr x3, int2
|
||||
ldr w1, [x3]
|
||||
adds w2,w0,w1
|
||||
mrs x4, nzcv
|
||||
mov w0, #0
|
||||
mov w8, #SYS_EXIT
|
||||
svc #0
|
14
arm/barrel-experiment.s
Normal file
14
arm/barrel-experiment.s
Normal file
@ -0,0 +1,14 @@
|
||||
.equ SYS_EXIT, 93
|
||||
|
||||
.data
|
||||
.text
|
||||
.globl _start
|
||||
|
||||
_start :
|
||||
mov x0, #15
|
||||
add x1,x0,x0,lsl #4 //x0 * 16 + x0
|
||||
mov x2, #1
|
||||
sub x1,xzr,x2, lsl #3 // 0 - 8
|
||||
mov w8, #SYS_EXIT
|
||||
svc #0
|
||||
|
16
arm/mult-bin-loop.c
Normal file
16
arm/mult-bin-loop.c
Normal file
@ -0,0 +1,16 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int main(){
|
||||
unsigned int a = 0xa2;
|
||||
unsigned int b = 0xb;
|
||||
unsigned long long int res = 0;
|
||||
unsigned long long int extra = (unsigned long long int) a;
|
||||
while (b) {
|
||||
if (b & 0x1) res += extra;
|
||||
extra = extra << 1;
|
||||
b = b >> 1;
|
||||
}
|
||||
exit(0);
|
||||
}
|
||||
|
28
arm/mult-bin-loop.s
Normal file
28
arm/mult-bin-loop.s
Normal file
@ -0,0 +1,28 @@
|
||||
.equ SYS_EXIT,93
|
||||
.data
|
||||
int1: .word 0xa2
|
||||
int2: .word 0xb
|
||||
.text
|
||||
.globl _start
|
||||
_start:
|
||||
adr x1, int1
|
||||
ldr w0, [x1]
|
||||
uxtw x1, w0 // int1 is in x1
|
||||
adr x2, int2
|
||||
ldr w3, [x2]
|
||||
uxtw x2, w3 // int2 is in x2
|
||||
mov x0, #0 // result is in x0
|
||||
loop:
|
||||
cbz x2, exit
|
||||
tbz x2, #0, next
|
||||
add x0, x2, #0
|
||||
next:
|
||||
lsl x2, x2, #1
|
||||
lsr x1, x1, #1
|
||||
b loop
|
||||
|
||||
exit: mov x0,#0
|
||||
mov w8,#SYS_EXIT
|
||||
svc #0x0
|
||||
|
||||
.end
|
3
arm/notes.txt
Normal file
3
arm/notes.txt
Normal file
@ -0,0 +1,3 @@
|
||||
cmp = subs sans sauvegarde résultat
|
||||
0111 + 0001
|
||||
tst =
|
24
arm/printHW.s
Normal file
24
arm/printHW.s
Normal file
@ -0,0 +1,24 @@
|
||||
/*
|
||||
Lines enclosed here are comments
|
||||
A small program: prints "Hello World!"
|
||||
*/
|
||||
// From // to the end of this line is a comment: next are directives to the assembler
|
||||
.equ SYS_EXIT, 93
|
||||
.equ SYS_WRITE, 64
|
||||
.data // tells assembler to assemble the following in the data section
|
||||
msg: .asciz "Hello World!\n" //msg retains the address of the string
|
||||
.text // tells assembler to assemble the following
|
||||
// in the text (code) section
|
||||
.globl _start // _start is there where the program starts,
|
||||
// .globl makes it visible to the linker
|
||||
_start:
|
||||
mov x0,#1 // value 1 is placed in register x0
|
||||
adr x1,msg // the address retained by label msg is placed in register x1
|
||||
mov x2,#13
|
||||
mov w8, #SYS_WRITE // svc must find the syscall number in w8
|
||||
// and the syscall arguments in x0,x1,x2
|
||||
svc #0 // invoke syscall: displays on the screen
|
||||
mov x0, #0 // in x0 put the value you want to exit with
|
||||
mov w8,#SYS_EXIT
|
||||
svc #0
|
||||
.end
|
18
arm/shift-experiment.s
Normal file
18
arm/shift-experiment.s
Normal file
@ -0,0 +1,18 @@
|
||||
.equ SYS_EXIT, 93
|
||||
|
||||
.data
|
||||
.text
|
||||
int: .quad 0x8000000000000000
|
||||
.globl _start
|
||||
|
||||
_start :
|
||||
mov x0, #1
|
||||
lsl x1, x0, #3
|
||||
lsr x2, x0, #1
|
||||
adr x6, int
|
||||
ldr x3,[x6]
|
||||
lsr x4, x3, #3
|
||||
asr x5, x3, #3
|
||||
mov w8, #SYS_EXIT
|
||||
svc #0
|
||||
|
16
arm/w-vs-x-and-extension.s
Normal file
16
arm/w-vs-x-and-extension.s
Normal file
@ -0,0 +1,16 @@
|
||||
.equ SYS_EXIT, 93
|
||||
|
||||
.data
|
||||
int: .quad 0x11223344aabbccdd
|
||||
int32: .word 0x887766ee
|
||||
.text
|
||||
.globl _start
|
||||
_start:
|
||||
adr x1, int
|
||||
ldr x0,[x1]
|
||||
adr x1, int32
|
||||
ldr w0,[x1] //Le registre x0 est vidé pour ne contenir seulement la valeur int32
|
||||
sxtw x0, w0
|
||||
mov x0, #0
|
||||
mov w8, #SYS_EXIT
|
||||
svc #0
|
Loading…
Reference in New Issue
Block a user