More Related Content
Similar to Office evolution infographic (20)
Office evolution infographic
- 1. 1860s
1960s
1980s
1970s
Typewriter invented, paving the way for
technology to change the way businesses
operate
Video conferencing enters the board-
room, as large corporations start to see
the benefit of reduced travel expenses
and more personal communication
with long-distance clients.
1990s
Internet access becomes the norm, as
workers begin to benefit from the
power of email as a business
communication tool
Office cubicles isolate employees
from the sights and sounds of open
workspaces so they can work without
distractions.
1937
Alan Turing develops the concept
of a theoretical computing machine.
1975
Altair invents the first portable
computer.
1998
Sergey Brin and Larry Page
founded Google.
1963
Douglass E. invents the first
computer mouse.
1984
Michael Dell, a 19-year-old,
creates PCs Limited, selling
computers built from stock
components out of his dorm.
2002
Approximately 1 billion PCs
have been sold
Office PCs go mainstream,
introducing many business people to
spreadsheets and business printing for
the first time
2000s
In house file storage is commonplace,
organisations benefit from lower cost
rack servers to store essential
company information.
01
SECTION46
18
%
struct
group_info
init_groups
= { .usage
= ATOMIC_INIT(2)
};
struct
group_info
*groups_alloc(int
gidsetsize){
struct
group_info
*group_info;
int
nblocks;
int
i;
nblocks
= (gidsetsize
+ NGROUPS_PER_BLOCK
- 1) / NGROUPS_PER_BLOCK;
/* Make
sure
we
always
alloca
te at least
one
indirect
block
pointer
*/
nblocks
= nblocks
? : 1;
group_info
= kmalloc(sizeof(*group_info)
+ nblocks*sizeof(gid_t
*), GFP_USER);if (!group_info)
return
NULL;
group_info->ngroups
= gidsetsize;
group_info->nblocks
= nblocks;
atomic_set(&group_info->usage,
1);
if (gidsetsize
<= NGROUPS_SMALL)
group_info->blocks[0]
= group_info->small_block;
else
{
for
(i = 0; i < nblocks;
i++)
{gid_t
*b;
b = (void
*)__get_free_page(GFP_USER);
if (!b)
goto
out_undo_partial_alloc;
group_info->blocks[i]
= b;
}
}
return
group_info;
out_undo_partial_alloc:
while
(--i >= 0) {
free_page((unsigned
long)group_info->blocks[i]);
}
kfree(group_info);
return
NULL;
}
54
04
15
100
%90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
100
75
50
25
0
28%28%
28%
28%
28%
28%
28%
28%
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Nov
Oct
Dec
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Nov
Oct
Dec
01
02
03
04
05
06
07
08
09
10
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Nov
Oct
Dec
50
%
25
%
10
0%
0%
75
%
V
ik
t
o
r
ia
C
A
L
L
IN
G
str
uct
gro
up_
info
init_
gro
ups
=
{
.usa
ge
=
ATO
MIC_
INIT(
2)
};
str
uct
gro
up_
info
*gr
oup
s_a
llo
c(in
t
gids
ets
ize){
str
uct
gro
up_
info
*gr
oup
_inf
o;
int
nbl
ock
s;
int
i;
nbl
ock
s
=
(gid
set
size
+
NGR
OUP
S_P
ER_
BLO
CK
-
1)
/
NGR
OUP
S_P
ER_
BLO
CK;
/*
Mak
e
sur
e
we
alw
ays
all
oca
te
at
lea
st
one
indi
rec
t
blo
ck
poin
ter
*/
nbl
ock
s
=
nbl
ock
s
?
:1;
gro
up_
info
=
kma
llo
c(si
zeo
f(*g
rou
p_in
fo)
+
nbl
ock
s*si
zeo
f(gid
_t
*),
GFP
_US
ER);
if
(!gr
oup
_inf
o)
ret
urn
NUL
L;
gro
up_
info
->ng
rou
ps
=
gids
ets
ize;
gro
up_
info
->nb
loc
ks
=
nbl
ock
s;
ato
mic_
set
(&gr
oup
_inf
o->u
sag
e,
1);
if
(gid
set
size
<=
NGR
OUP
S_S
MAL
L)
gro
up_
info
->bl
ock
s[0]
=
gro
up_
info
->sm
all
_bl
ock
;
els
e
{
for
(i
=
0;
i<
nbl
ock
s;
i++)
{
gid_
t
*b;
b
=
(voi
d
*)__g
et_f
ree
_pa
ge(G
FP_U
SER
);
if
(!b)
got
o
out
_un
do_
par
tial
_al
loc
;
gro
up_
info
->bl
ock
s[i]
=
b;
}}
ret
urn
gro
up_
info
;
out
_un
do_
par
tial
_al
loc
:
whi
le
(--i
>=
0)
{
fre
e_pa
ge((
uns
igne
d
lon
g)gr
oup
_inf
o->b
loc
ks[i
]);
}
kfr
ee(g
rou
p_in
fo);
ret
urn
NUL
L;
}
15
:1
6
84
de
g
2050s
Interactive touch screen tables, with
external sensory ability, holographic
projections, smart watches or
wearable technology. What will the
future hold?
01
SECTION46
18%
struct
group_info
init_groups
= { .usage
= ATOMIC_INIT(2)
};
struct
group_info
*groups_alloc(int
gidsetsize){
struct
group_info
*group_info;
int
nblocks;
int
i;
nblocks
= (gidsetsize
+ NGROUPS_PER_BLO
CK - 1) / NGROUPS_PER_BLO
CK;
/* Make
sure
we
always
alloca
te at least
one
indirect
block
pointer
*/
nblocks
= nblocks
? : 1;
group_info
= kmalloc(sizeof(*g
roup_info)
+ nblocks*sizeof(gid
_t *), GFP_USER);if (!group_info)
return
NULL;
group_info->ngro
ups
= gidsetsize;
group_info->nbloc
ks
= nblocks;
atomic_set(&group_
info->usage,
1);
if (gidsetsize
<= NGROUPS_SMALL)
group_info->block
s[0]
= group_info->smal
l_block;
else
{
for
(i = 0; i < nblocks;
i++)
{gid_t
*b;
b = (void
*)__get_free_page(
GFP_USER);
if (!b)
goto
out_undo_partial
_alloc;
group_info->block
s[i]
= b;
}
}
return
group_info;
out_undo_partial
_alloc:
while
(--i >= 0) {
free_page((unsigne
d long)group_info->
blocks[i]);
}
kfree(group_info)
;return
NULL;
}
54
04
15
10
0%
90
%80
%70
%60
%50
%40
%30
%20
%10
%
0%
10
0
75
50
25
0
28
%
28
%
28
%
28
%
28
%
28
%
28
%
28
%
Ja
n
Fe
b
Ma
r
Ap
r
Ma
y
Ju
n
Ju
l
Au
g
Se
p
No
v
Oc
t
De
c
Ja
n
Fe
b
Ma
r
Ap
r
Ma
y
Ju
n
Ju
l
Au
g
Se
p
No
v
Oc
t
De
c
01
02
03
04
05
06
07
08
09
10
Ja
n
Fe
b
Ma
r
Ap
r
Ma
y
Ju
n
Ju
l
Au
g
Se
p
No
v
Oc
t
De
c
50%
2
5
%
10
0
%
0
%
7
5
%
V
ik
t
o
r
ia
C
A
L
L
IN
G
ck
s[
i]);
15
:16
8
4
d
e
g
2010s
Dell hybrid laptops, tablets and smart-
phones enables employees to work
effectively on the move, and in the
office.
EVOLUTION
EVOLUTION
OFFICE
OFFICE
o
f
th
e
o
f
th
e
OFFICE
Reel to reel tape recorder
‘Picturephone’ - early
videoconferencing device
Wired 56kbits/ modem
3½-inch floppy disks
and CD-ROMs
Flatscreens, printer/scanners
and larger internal storage
8-inch floppy disks, and an
early mobile phone
All-in-one PCs
using cloud storage
Table interacts with
real-world objects
Smith Corona Typewriter
Early version of
the typewriter
Archiving done by hand
and on paper
Copyright © 2014 IDG UK